diff --git a/hyracks-api/.settings/org.eclipse.jdt.core.prefs b/hyracks-api/.settings/org.eclipse.jdt.core.prefs
index a0e106b..6b7a0fc 100644
--- a/hyracks-api/.settings/org.eclipse.jdt.core.prefs
+++ b/hyracks-api/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,4 @@
-#Thu Jul 29 01:10:06 PDT 2010
+#Thu Jun 02 12:55:19 PDT 2011
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
 org.eclipse.jdt.core.compiler.compliance=1.6
diff --git a/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CLI.java b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CLI.java
index 73f4bc9..f01c724 100644
--- a/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CLI.java
+++ b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CLI.java
@@ -15,29 +15,25 @@
 package edu.uci.ics.hyracks.cli;
 
 import java.io.IOException;
-import java.io.StringReader;
-import java.util.List;
 
 import jline.ConsoleReader;
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.cli.commands.Command;
 
 public class CLI {
     private static final String HYRACKS_PROMPT = "hyracks> ";
     private static final String HYRAX_CONTINUE_PROMPT = "> ";
     private final ConsoleReader reader;
-    private IHyracksClientConnection connection;
+    private final Session session;
 
     public CLI(String[] args) throws IOException {
         reader = new ConsoleReader();
-        connection = null;
+        session = new Session();
     }
 
     public void run() throws IOException {
         boolean eof = false;
         while (true) {
             String prompt = HYRACKS_PROMPT;
-            StringBuffer command = new StringBuffer();
+            StringBuilder command = new StringBuilder();
             while (true) {
                 String line = reader.readLine(prompt);
                 if (line == null) {
@@ -58,26 +54,10 @@
                 break;
             }
             try {
-                execute(command);
+                CommandExecutor.execute(session, command.toString());
             } catch (Exception e) {
                 e.printStackTrace();
             }
         }
     }
-
-    private void execute(StringBuffer command) throws Exception {
-        CLIParser parser = new CLIParser(new StringReader(command.toString()));
-        List<Command> cmds = parser.Commands();
-        for (Command cmd : cmds) {
-            cmd.run(this);
-        }
-    }
-
-    public void setConnection(IHyracksClientConnection connection) {
-        this.connection = connection;
-    }
-
-    public IHyracksClientConnection getConnection() {
-        return connection;
-    }
 }
\ No newline at end of file
diff --git a/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CommandExecutor.java b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CommandExecutor.java
new file mode 100644
index 0000000..6bdd136
--- /dev/null
+++ b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CommandExecutor.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2009-2010 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package edu.uci.ics.hyracks.cli;
+
+import java.io.StringReader;
+import java.util.List;
+
+import edu.uci.ics.hyracks.cli.commands.Command;
+
+public class CommandExecutor {
+    public static void execute(Session session, String command) throws Exception {
+        CLIParser parser = new CLIParser(new StringReader(command));
+        List<Command> cmds = parser.Commands();
+        for (Command cmd : cmds) {
+            cmd.run(session);
+        }
+    }
+}
\ No newline at end of file
diff --git a/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Session.java b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Session.java
new file mode 100644
index 0000000..f15b1bb
--- /dev/null
+++ b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Session.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2009-2010 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package edu.uci.ics.hyracks.cli;
+
+import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
+
+public class Session {
+    private IHyracksClientConnection connection;
+
+    public void setConnection(IHyracksClientConnection connection) {
+        this.connection = connection;
+    }
+
+    public IHyracksClientConnection getConnection() {
+        return connection;
+    }
+}
\ No newline at end of file
diff --git a/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/Command.java b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/Command.java
index 4e3fedd..ee5849b 100644
--- a/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/Command.java
+++ b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/Command.java
@@ -1,7 +1,7 @@
 package edu.uci.ics.hyracks.cli.commands;
 
-import edu.uci.ics.hyracks.cli.CLI;
+import edu.uci.ics.hyracks.cli.Session;
 
 public abstract class Command {
-    public abstract void run(CLI cli) throws Exception;
+    public abstract void run(Session session) throws Exception;
 }
\ No newline at end of file
diff --git a/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/ConnectCommand.java b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/ConnectCommand.java
index 57034be..e1a1fd2 100644
--- a/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/ConnectCommand.java
+++ b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/ConnectCommand.java
@@ -2,7 +2,7 @@
 
 import edu.uci.ics.hyracks.api.client.HyracksRMIConnection;
 import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.cli.CLI;
+import edu.uci.ics.hyracks.cli.Session;
 
 public class ConnectCommand extends Command {
     private String host;
@@ -20,9 +20,9 @@
     }
 
     @Override
-    public void run(CLI cli) throws Exception {
+    public void run(Session session) throws Exception {
         System.err.println("Connecting to host: " + host + ", port: " + port);
         IHyracksClientConnection conn = new HyracksRMIConnection(host, port);
-        cli.setConnection(conn);
+        session.setConnection(conn);
     }
 }
\ No newline at end of file
diff --git a/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/CreateApplicationCommand.java b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/CreateApplicationCommand.java
index 7164e12..7b35ee5 100644
--- a/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/CreateApplicationCommand.java
+++ b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/CreateApplicationCommand.java
@@ -3,7 +3,7 @@
 import java.io.File;
 
 import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.cli.CLI;
+import edu.uci.ics.hyracks.cli.Session;
 
 public class CreateApplicationCommand extends Command {
     private String appName;
@@ -16,8 +16,8 @@
     }
 
     @Override
-    public void run(CLI cli) throws Exception {
-        IHyracksClientConnection hcc = cli.getConnection();
+    public void run(Session session) throws Exception {
+        IHyracksClientConnection hcc = session.getConnection();
         if (hcc == null) {
             throw new RuntimeException("Not connected to Hyracks Cluster Controller");
         }
diff --git a/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DestroyApplicationCommand.java b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DestroyApplicationCommand.java
index 2d473dc..03aed1e 100644
--- a/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DestroyApplicationCommand.java
+++ b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DestroyApplicationCommand.java
@@ -1,7 +1,7 @@
 package edu.uci.ics.hyracks.cli.commands;
 
 import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.cli.CLI;
+import edu.uci.ics.hyracks.cli.Session;
 
 public class DestroyApplicationCommand extends Command {
     private String appName;
@@ -11,8 +11,8 @@
     }
 
     @Override
-    public void run(CLI cli) throws Exception {
-        IHyracksClientConnection hcc = cli.getConnection();
+    public void run(Session session) throws Exception {
+        IHyracksClientConnection hcc = session.getConnection();
         if (hcc == null) {
             throw new RuntimeException("Not connected to Hyracks Cluster Controller");
         }
diff --git a/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DisconnectCommand.java b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DisconnectCommand.java
index 460d2c3..facf0f1 100644
--- a/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DisconnectCommand.java
+++ b/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DisconnectCommand.java
@@ -1,11 +1,11 @@
 package edu.uci.ics.hyracks.cli.commands;
 
-import edu.uci.ics.hyracks.cli.CLI;
+import edu.uci.ics.hyracks.cli.Session;
 
 public class DisconnectCommand extends Command {
     @Override
-    public void run(CLI cli) throws Exception {
+    public void run(Session session) throws Exception {
         System.err.println("Disconnecting...");
-        cli.setConnection(null);
+        session.setConnection(null);
     }
 }
\ No newline at end of file
diff --git a/hyracks-dataflow-hadoop/.settings/org.eclipse.jdt.core.prefs b/hyracks-dataflow-hadoop/.settings/org.eclipse.jdt.core.prefs
index 7404d54..0272d6e 100644
--- a/hyracks-dataflow-hadoop/.settings/org.eclipse.jdt.core.prefs
+++ b/hyracks-dataflow-hadoop/.settings/org.eclipse.jdt.core.prefs
@@ -1,5 +1,15 @@
-#Tue Nov 02 17:09:03 PDT 2010
+#Thu Jun 02 13:11:16 PDT 2011
 eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
 org.eclipse.jdt.core.compiler.compliance=1.6
 org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
@@ -14,7 +24,7 @@
 org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
 org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=49
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=48
 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
@@ -48,18 +58,18 @@
 org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
 org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
 org.eclipse.jdt.core.formatter.comment.format_header=false
 org.eclipse.jdt.core.formatter.comment.format_html=true
 org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
 org.eclipse.jdt.core.formatter.comment.format_source_code=true
 org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
 org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
 org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
 org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=9999
+org.eclipse.jdt.core.formatter.comment.line_length=80
 org.eclipse.jdt.core.formatter.compact_else_if=true
 org.eclipse.jdt.core.formatter.continuation_indentation=2
 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
@@ -246,7 +256,7 @@
 org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
 org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
 org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=false
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
 org.eclipse.jdt.core.formatter.join_wrapped_lines=true
 org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
 org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
@@ -257,7 +267,7 @@
 org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
 org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
 org.eclipse.jdt.core.formatter.tabulation.char=space
 org.eclipse.jdt.core.formatter.tabulation.size=4
 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
diff --git a/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/HadoopMapperOperatorDescriptor.java b/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/HadoopMapperOperatorDescriptor.java
index 6df880a..14c034a 100644
--- a/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/HadoopMapperOperatorDescriptor.java
+++ b/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/HadoopMapperOperatorDescriptor.java
@@ -71,16 +71,8 @@
             Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
             jobConf = getJobConf();
             populateCache(jobConf);
-            try {
-                mapper = createMapper();
-            } catch (Exception e) {
-                throw new HyracksDataException(e);
-            }
             conf = new JobConf(jobConf);
             conf.setClassLoader(jobConf.getClassLoader());
-            if (!jobConf.getUseNewMapper()) {
-                ((org.apache.hadoop.mapred.Mapper) mapper).configure(conf);
-            }
             reporter = createReporter();
         }
 
@@ -143,6 +135,19 @@
             }
             this.writer = writer;
         }
+
+        protected void initializeMapper() throws HyracksDataException {
+            super.initializeMapper();
+            try {
+                mapper = createMapper(conf);
+            } catch (Exception e) {
+                throw new HyracksDataException(e);
+            }
+            if (!conf.getUseNewMapper()) {
+                ((org.apache.hadoop.mapred.Mapper) mapper).configure(conf);
+            }
+        }
+
     }
 
     private class ReaderMapperOperator extends MapperBaseOperator {
@@ -167,10 +172,10 @@
                 } else if (splitRead instanceof org.apache.hadoop.mapreduce.lib.input.FileSplit) {
                     conf.set("map.input.file", ((org.apache.hadoop.mapreduce.lib.input.FileSplit) splitRead).getPath()
                             .toString());
-                    conf.setLong("map.input.start",
-                            ((org.apache.hadoop.mapreduce.lib.input.FileSplit) splitRead).getStart());
-                    conf.setLong("map.input.length",
-                            ((org.apache.hadoop.mapreduce.lib.input.FileSplit) splitRead).getLength());
+                    conf.setLong("map.input.start", ((org.apache.hadoop.mapreduce.lib.input.FileSplit) splitRead)
+                            .getStart());
+                    conf.setLong("map.input.length", ((org.apache.hadoop.mapreduce.lib.input.FileSplit) splitRead)
+                            .getLength());
                 }
             } catch (Exception e) {
                 e.printStackTrace();
@@ -180,10 +185,22 @@
             }
         }
 
+        protected void initializeMapper() throws HyracksDataException {
+            super.initializeMapper();
+            updateConfWithSplit(conf);
+            try {
+                mapper = createMapper(conf);
+            } catch (Exception e) {
+                throw new HyracksDataException(e);
+            }
+            if (!conf.getUseNewMapper()) {
+                ((org.apache.hadoop.mapred.Mapper) mapper).configure(conf);
+            }
+        }
+
         public void mapInput() throws HyracksDataException, InterruptedException, ClassNotFoundException {
             try {
                 initializeMapper();
-                updateConfWithSplit(conf);
                 conf.setClassLoader(this.getClass().getClassLoader());
                 Object reader;
                 Object key = null;
@@ -209,7 +226,7 @@
                     };;;
 
                     OutputCommitter outputCommitter = new org.apache.hadoop.mapreduce.lib.output.NullOutputFormat()
-                            .getOutputCommitter(new TaskAttemptContext(jobConf, new TaskAttemptID()));
+                            .getOutputCommitter(new TaskAttemptContext(conf, new TaskAttemptID()));
                     StatusReporter statusReporter = new StatusReporter() {
                         @Override
                         public void setStatus(String arg0) {
@@ -229,7 +246,7 @@
                             return null;
                         }
                     };;;
-                    context = new org.apache.hadoop.mapreduce.Mapper().new Context(jobConf, new TaskAttemptID(),
+                    context = new org.apache.hadoop.mapreduce.Mapper().new Context(conf, new TaskAttemptID(),
                             newReader, recordWriter, outputCommitter, statusReporter,
                             (org.apache.hadoop.mapreduce.InputSplit) inputSplit);
                     newReader.initialize((org.apache.hadoop.mapreduce.InputSplit) inputSplit, context);
@@ -298,9 +315,9 @@
         String mapOutputValueClassName = conf.getMapOutputValueClass().getName();
         try {
             if (hadoopClassFactory == null) {
-                recordDescriptor = DatatypeHelper.createKeyValueRecordDescriptor(
-                        (Class<? extends Writable>) Class.forName(mapOutputKeyClassName),
-                        (Class<? extends Writable>) Class.forName(mapOutputValueClassName));
+                recordDescriptor = DatatypeHelper.createKeyValueRecordDescriptor((Class<? extends Writable>) Class
+                        .forName(mapOutputKeyClassName), (Class<? extends Writable>) Class
+                        .forName(mapOutputValueClassName));
             } else {
                 recordDescriptor = DatatypeHelper.createKeyValueRecordDescriptor(
                         (Class<? extends Writable>) hadoopClassFactory.loadClass(mapOutputKeyClassName),
@@ -312,21 +329,21 @@
         return recordDescriptor;
     }
 
-    private Object createMapper() throws Exception {
+    private Object createMapper(JobConf conf) throws Exception {
         Object mapper;
         if (mapperClass != null) {
-            return ReflectionUtils.newInstance(mapperClass, jobConf);
+            return ReflectionUtils.newInstance(mapperClass, conf);
         } else {
             String mapperClassName = null;
             if (jobConf.getUseNewMapper()) {
-                JobContext jobContext = new JobContext(jobConf, null);
+                JobContext jobContext = new JobContext(conf, null);
                 mapperClass = jobContext.getMapperClass();
                 mapperClassName = mapperClass.getName();
             } else {
-                mapperClass = super.getJobConf().getMapperClass();
+                mapperClass = conf.getMapperClass();
                 mapperClassName = mapperClass.getName();
             }
-            mapper = getHadoopClassFactory().createMapper(mapperClassName, jobConf);
+            mapper = getHadoopClassFactory().createMapper(mapperClassName, conf);
         }
         return mapper;
     }
@@ -344,8 +361,8 @@
         } else {
             Class inputFormatClass = conf.getInputFormat().getClass();
             InputFormat inputFormat = (InputFormat) ReflectionUtils.newInstance(inputFormatClass, conf);
-            return inputFormat.getRecordReader((org.apache.hadoop.mapred.InputSplit) inputSplit, conf,
-                    super.createReporter());
+            return inputFormat.getRecordReader((org.apache.hadoop.mapred.InputSplit) inputSplit, conf, super
+                    .createReporter());
         }
     }
 
@@ -383,8 +400,8 @@
                 }
                 return createSelfReadingMapper(ctx, recordDescriptor, partition);
             } else {
-                return new DeserializedOperatorNodePushable(ctx, new MapperOperator(partition),
-                        recordDescProvider.getInputRecordDescriptor(this.odId, 0));
+                return new DeserializedOperatorNodePushable(ctx, new MapperOperator(partition), recordDescProvider
+                        .getInputRecordDescriptor(this.odId, 0));
             }
         } catch (Exception e) {
             throw new HyracksDataException(e);
diff --git a/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/HadoopReducerOperatorDescriptor.java b/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/HadoopReducerOperatorDescriptor.java
index 0e05997..0af0596 100644
--- a/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/HadoopReducerOperatorDescriptor.java
+++ b/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/HadoopReducerOperatorDescriptor.java
@@ -23,13 +23,14 @@
 import org.apache.hadoop.io.Writable;
 import org.apache.hadoop.io.WritableComparable;
 import org.apache.hadoop.io.WritableComparator;
-import org.apache.hadoop.mapred.Counters.Counter;
 import org.apache.hadoop.mapred.InputSplit;
 import org.apache.hadoop.mapred.JobConf;
 import org.apache.hadoop.mapred.RawKeyValueIterator;
 import org.apache.hadoop.mapred.Reducer;
 import org.apache.hadoop.mapred.Reporter;
+import org.apache.hadoop.mapred.Counters.Counter;
 import org.apache.hadoop.mapreduce.JobContext;
+import org.apache.hadoop.mapreduce.StatusReporter;
 import org.apache.hadoop.mapreduce.TaskAttemptID;
 import org.apache.hadoop.util.Progress;
 import org.apache.hadoop.util.ReflectionUtils;
@@ -310,11 +311,13 @@
     private static final long serialVersionUID = 1L;
     private Class reducerClass;
     private IComparatorFactory comparatorFactory;
+    private boolean useAsCombiner = false;
 
     public HadoopReducerOperatorDescriptor(JobSpecification spec, JobConf conf, IComparatorFactory comparatorFactory,
-            IHadoopClassFactory classFactory) {
+            IHadoopClassFactory classFactory, boolean useAsCombiner) {
         super(spec, 1, getRecordDescriptor(conf, classFactory), conf, classFactory);
         this.comparatorFactory = comparatorFactory;
+        this.useAsCombiner = useAsCombiner;
     }
 
     private Object createReducer() throws Exception {
@@ -322,12 +325,22 @@
             return ReflectionUtils.newInstance(reducerClass, getJobConf());
         } else {
             Object reducer;
-            if (getJobConf().getUseNewReducer()) {
-                JobContext jobContext = new JobContext(getJobConf(), null);
-                reducerClass = (Class<? extends org.apache.hadoop.mapreduce.Reducer<?, ?, ?, ?>>) jobContext
-                        .getReducerClass();
+            if (!useAsCombiner) {
+                if (getJobConf().getUseNewReducer()) {
+                    JobContext jobContext = new JobContext(getJobConf(), null);
+                    reducerClass = (Class<? extends org.apache.hadoop.mapreduce.Reducer<?, ?, ?, ?>>) jobContext
+                            .getReducerClass();
+                } else {
+                    reducerClass = (Class<? extends Reducer>) getJobConf().getReducerClass();
+                }
             } else {
-                reducerClass = (Class<? extends Reducer>) getJobConf().getReducerClass();
+                if (getJobConf().getUseNewReducer()) {
+                    JobContext jobContext = new JobContext(getJobConf(), null);
+                    reducerClass = (Class<? extends org.apache.hadoop.mapreduce.Reducer<?, ?, ?, ?>>) jobContext
+                            .getCombinerClass();
+                } else {
+                    reducerClass = (Class<? extends Reducer>) getJobConf().getCombinerClass();
+                }
             }
             reducer = getHadoopClassFactory().createReducer(reducerClass.getName(), getJobConf());
             return reducer;
@@ -382,9 +395,8 @@
         RecordDescriptor recordDescriptor = null;
         try {
             if (classFactory == null) {
-                recordDescriptor = DatatypeHelper.createKeyValueRecordDescriptor(
-                        (Class<? extends Writable>) Class.forName(outputKeyClassName),
-                        (Class<? extends Writable>) Class.forName(outputValueClassName));
+                recordDescriptor = DatatypeHelper.createKeyValueRecordDescriptor((Class<? extends Writable>) Class
+                        .forName(outputKeyClassName), (Class<? extends Writable>) Class.forName(outputValueClassName));
             } else {
                 recordDescriptor = DatatypeHelper.createKeyValueRecordDescriptor(
                         (Class<? extends Writable>) classFactory.loadClass(outputKeyClassName),
diff --git a/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/HadoopWriteOperatorDescriptor.java b/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/HadoopWriteOperatorDescriptor.java
index 4dcfa61..2154f5a 100644
--- a/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/HadoopWriteOperatorDescriptor.java
+++ b/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/HadoopWriteOperatorDescriptor.java
@@ -21,14 +21,13 @@
 
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.SequenceFile.Writer;
-import org.apache.hadoop.mapred.Counters.Counter;
+import org.apache.hadoop.mapred.FileOutputCommitter;
 import org.apache.hadoop.mapred.FileOutputFormat;
 import org.apache.hadoop.mapred.InputSplit;
 import org.apache.hadoop.mapred.JobConf;
 import org.apache.hadoop.mapred.Reporter;
+import org.apache.hadoop.mapred.Counters.Counter;
 import org.apache.hadoop.mapred.lib.NullOutputFormat;
-import org.apache.hadoop.mapreduce.JobContext;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
 import org.apache.hadoop.mapreduce.TaskAttemptID;
 import org.apache.hadoop.util.Progressable;
@@ -49,63 +48,81 @@
         JobConf conf;
         Path finalOutputFile;
         Path tempOutputFile;
+        Path tempDir;
 
-        HadoopFileWriter(Object recordWriter, Path tempOutputFile, Path outputFile, JobConf conf) {
+        HadoopFileWriter(Object recordWriter, int index, JobConf conf) throws Exception {
             this.recordWriter = recordWriter;
             this.conf = conf;
-            this.finalOutputFile = outputFile;
-            this.tempOutputFile = tempOutputFile;
+            initialize(index, conf);
+        }
+
+        private void initialize(int index, JobConf conf) throws Exception {
+            if (!(conf.getOutputFormat() instanceof NullOutputFormat)) {
+                boolean isMap = conf.getNumReduceTasks() == 0;
+                TaskAttemptID taskAttempId = new TaskAttemptID("0", index, isMap, index, index);
+                conf.set("mapred.task.id", taskAttempId.toString());
+                String suffix = new String("part-00000");
+                suffix = new String(suffix.substring(0, suffix.length() - ("" + index).length()));
+                suffix = suffix + index;
+                outputPath = new Path(conf.get("mapred.output.dir"));
+                tempDir = new Path(outputPath, FileOutputCommitter.TEMP_DIR_NAME);
+                FileSystem fileSys = tempDir.getFileSystem(conf);
+                if (!fileSys.mkdirs(tempDir)) {
+                    throw new IOException("Mkdirs failed to create " + tempDir.toString());
+                }
+                tempOutputFile = new Path(tempDir, new Path("_" + taskAttempId.toString()));
+                tempOutputFile = new Path(tempOutputFile, suffix);
+                finalOutputFile = new Path(outputPath, suffix);
+                if (conf.getUseNewMapper()) {
+                    org.apache.hadoop.mapreduce.JobContext jobContext = new org.apache.hadoop.mapreduce.JobContext(
+                            conf, null);
+                    org.apache.hadoop.mapreduce.OutputFormat newOutputFormat = (org.apache.hadoop.mapreduce.OutputFormat) ReflectionUtils
+                            .newInstance(jobContext.getOutputFormatClass(), conf);
+                    recordWriter = newOutputFormat.getRecordWriter(new TaskAttemptContext(conf, taskAttempId));
+                } else {
+                    recordWriter = conf.getOutputFormat().getRecordWriter(FileSystem.get(conf), conf, suffix,
+                            new Progressable() {
+                                @Override
+                                public void progress() {
+                                }
+                            });
+                }
+            }
         }
 
         @Override
         public void write(Object[] record) throws Exception {
-            if (conf.getUseNewMapper()) {
-                ((org.apache.hadoop.mapreduce.RecordWriter) recordWriter).write(record[0], record[1]);
-            } else {
-                ((org.apache.hadoop.mapred.RecordWriter) recordWriter).write(record[0], record[1]);
+            if (recordWriter != null) {
+                if (conf.getUseNewMapper()) {
+                    ((org.apache.hadoop.mapreduce.RecordWriter) recordWriter).write(record[0], record[1]);
+                } else {
+                    ((org.apache.hadoop.mapred.RecordWriter) recordWriter).write(record[0], record[1]);
+                }
             }
         }
 
         @Override
         public void close() {
             try {
-                if (conf.getUseNewMapper()) {
-                    ((org.apache.hadoop.mapreduce.RecordWriter) recordWriter).close(new TaskAttemptContext(conf,
-                            new TaskAttemptID()));
-                } else {
-                    ((org.apache.hadoop.mapred.RecordWriter) recordWriter).close(null);
+                if (recordWriter != null) {
+                    if (conf.getUseNewMapper()) {
+                        ((org.apache.hadoop.mapreduce.RecordWriter) recordWriter).close(new TaskAttemptContext(conf,
+                                new TaskAttemptID()));
+                    } else {
+                        ((org.apache.hadoop.mapred.RecordWriter) recordWriter).close(null);
+                    }
+                    if (outputPath != null) {
+                        FileSystem fileSystem = FileSystem.get(conf);
+                        fileSystem.rename(tempOutputFile, finalOutputFile);
+                        fileSystem.delete(tempDir, true);
+                    }
                 }
-                FileSystem.get(conf).rename(tempOutputFile, finalOutputFile);
             } catch (Exception e) {
                 e.printStackTrace();
             }
         }
     }
 
-    private static class HadoopSequenceWriter implements IRecordWriter {
-        private Writer writer;
-
-        HadoopSequenceWriter(Writer writer) throws Exception {
-            this.writer = writer;
-        }
-
-        @Override
-        public void close() {
-            try {
-                writer.close();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-
-        @Override
-        public void write(Object[] record) throws Exception {
-            Object key = record[0];
-            Object value = record[1];
-            writer.append(key, value);
-        }
-    }
-
     private static final long serialVersionUID = 1L;
     Map<String, String> jobConfMap;
 
@@ -114,46 +131,9 @@
         JobConf conf = DatatypeHelper.map2JobConf((HashMap) jobConfMap);
         conf.setClassLoader(this.getClass().getClassLoader());
         Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
-        FileSystem fileSystem = null;
-        try {
-            fileSystem = FileSystem.get(conf);
-        } catch (IOException ioe) {
-            ioe.printStackTrace();
-        }
-        Path path = new Path(fileSplit.getLocalFile().getFile().getPath());
-        Path tempOutputFile = null;
-        Path finalOutputFile = null;
-        checkIfCanWriteToHDFS(new FileSplit[] { fileSplit });
+        FileSystem fileSystem = FileSystem.get(conf);
         Object recordWriter = null;
-        Object outputFormat = null;
-        String taskAttempId = new TaskAttemptID().toString();
-        conf.set("mapred.task.id", taskAttempId);
-        outputPath = new Path(conf.get("mapred.output.dir"));
-        outputTempPath = new Path(outputPath, "_temporary");
-        if (outputPath != null && !fileSystem.exists(outputPath)) {
-            fileSystem.mkdirs(outputTempPath);
-        }
-        String suffix = new String("part-r-00000");
-        suffix = new String(suffix.substring(0, suffix.length() - ("" + index).length()));
-        suffix = suffix + index;
-        tempOutputFile = new Path(outputTempPath, "_" + taskAttempId + "/" + suffix);
-        if (conf.getNumReduceTasks() == 0) {
-            suffix.replace("-r-", "-m-");
-        }
-        finalOutputFile = new Path(outputPath, suffix);
-        if (conf.getUseNewMapper()) {
-            org.apache.hadoop.mapreduce.OutputFormat newOutputFormat = (org.apache.hadoop.mapreduce.OutputFormat) ReflectionUtils
-                    .newInstance((new JobContext(conf, null)).getOutputFormatClass(), conf);
-            recordWriter = newOutputFormat.getRecordWriter(new TaskAttemptContext(conf, new TaskAttemptID()));
-        } else {
-            recordWriter = conf.getOutputFormat().getRecordWriter(fileSystem, conf, suffix, new Progressable() {
-                @Override
-                public void progress() {
-                }
-            });
-        }
-
-        return new HadoopFileWriter(recordWriter, tempOutputFile, finalOutputFile, conf);
+        return new HadoopFileWriter(recordWriter, index, conf);
     }
 
     Path outputPath;
@@ -219,7 +199,8 @@
         int numOutputters = conf.getNumReduceTasks() != 0 ? conf.getNumReduceTasks() : noOfMappers;
         Object outputFormat = null;
         if (conf.getUseNewMapper()) {
-            outputFormat = ReflectionUtils.newInstance(new JobContext(conf, null).getOutputFormatClass(), conf);
+            outputFormat = ReflectionUtils.newInstance(new org.apache.hadoop.mapreduce.JobContext(conf, null)
+                    .getOutputFormatClass(), conf);
         } else {
             outputFormat = conf.getOutputFormat();
         }
@@ -234,18 +215,15 @@
 
             FileSplit[] outputFileSplits = new FileSplit[numOutputters];
             String absolutePath = FileOutputFormat.getOutputPath(conf).toString();
-            System.out.println("absolute path:" + absolutePath);
             for (int index = 0; index < numOutputters; index++) {
                 String suffix = new String("part-00000");
                 suffix = new String(suffix.substring(0, suffix.length() - ("" + index).length()));
                 suffix = suffix + index;
                 String outputPath = absolutePath + "/" + suffix;
-                System.out.println("output path :" + outputPath);
                 outputFileSplits[index] = new FileSplit("localhost", outputPath);
             }
             return outputFileSplits;
         }
-
     }
 
     public HadoopWriteOperatorDescriptor(JobSpecification jobSpec, JobConf jobConf, int numMapTasks) throws Exception {
diff --git a/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/util/ClasspathBasedHadoopClassFactory.java b/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/util/ClasspathBasedHadoopClassFactory.java
index f4dbe4a..a9f3a71 100644
--- a/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/util/ClasspathBasedHadoopClassFactory.java
+++ b/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/util/ClasspathBasedHadoopClassFactory.java
@@ -17,19 +17,18 @@
 import org.apache.hadoop.mapred.JobConf;
 import org.apache.hadoop.util.ReflectionUtils;
 
-
 public class ClasspathBasedHadoopClassFactory implements IHadoopClassFactory {
 
     @Override
-    public Object createMapper(String mapClassName,JobConf conf) throws Exception {
+    public Object createMapper(String mapClassName, JobConf conf) throws Exception {
         Class clazz = loadClass(mapClassName);
         return ReflectionUtils.newInstance(clazz, conf);
     }
 
     @Override
-    public Object createReducer(String reduceClassName,JobConf conf) throws Exception {
+    public Object createReducer(String reduceClassName, JobConf conf) throws Exception {
         Class clazz = loadClass(reduceClassName);
-        return  ReflectionUtils.newInstance(clazz, conf);
+        return ReflectionUtils.newInstance(clazz, conf);
     }
 
     @Override
diff --git a/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/util/IHadoopClassFactory.java b/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/util/IHadoopClassFactory.java
index 22db448..c2ffeeb 100644
--- a/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/util/IHadoopClassFactory.java
+++ b/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/util/IHadoopClassFactory.java
@@ -20,9 +20,9 @@
 
 public interface IHadoopClassFactory extends Serializable {
 
-    public Object createMapper(String mapClassName,JobConf conf) throws Exception;
+    public Object createMapper(String mapClassName, JobConf conf) throws Exception;
 
-    public Object createReducer(String reduceClassName,JobConf conf) throws Exception;
+    public Object createReducer(String reduceClassName, JobConf conf) throws Exception;
 
     public Class loadClass(String className) throws Exception;
 }
diff --git a/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/util/InputSplitsProxy.java b/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/util/InputSplitsProxy.java
index 29239e3..9226c29 100644
--- a/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/util/InputSplitsProxy.java
+++ b/hyracks-dataflow-hadoop/src/main/java/edu/uci/ics/hyracks/dataflow/hadoop/util/InputSplitsProxy.java
@@ -36,15 +36,15 @@
         isClasses = new Class[inputSplits.length];
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         DataOutputStream dos = new DataOutputStream(baos);
-        if(conf.getUseNewMapper()){
+        if (conf.getUseNewMapper()) {
             for (int i = 0; i < inputSplits.length; ++i) {
-                isClasses[i] = ((org.apache.hadoop.mapreduce.InputSplit)inputSplits[i]).getClass();
-                ((Writable)inputSplits[i]).write(dos);
+                isClasses[i] = ((org.apache.hadoop.mapreduce.InputSplit) inputSplits[i]).getClass();
+                ((Writable) inputSplits[i]).write(dos);
             }
         } else {
             for (int i = 0; i < inputSplits.length; ++i) {
-                isClasses[i] = ((org.apache.hadoop.mapred.InputSplit)inputSplits[i]).getClass();
-                ((Writable)inputSplits[i]).write(dos);
+                isClasses[i] = ((org.apache.hadoop.mapred.InputSplit) inputSplits[i]).getClass();
+                ((Writable) inputSplits[i]).write(dos);
             }
         }
         dos.close();
@@ -52,17 +52,16 @@
 
     }
 
-    public Object[] toInputSplits(JobConf jobConf) throws InstantiationException, IllegalAccessException,
-            IOException {
+    public Object[] toInputSplits(JobConf jobConf) throws InstantiationException, IllegalAccessException, IOException {
         Object[] splits = new Object[isClasses.length];
         DataInputStream dis = new DataInputStream(new ByteArrayInputStream(bytes));
         for (int i = 0; i < splits.length; ++i) {
             splits[i] = ReflectionUtils.newInstance(isClasses[i], jobConf);
-            if(jobConf.getUseNewMapper()){
-                ((Writable)splits[i]).readFields(dis);
-            }else {
-                ((Writable)splits[i]).readFields(dis);
-            }    
+            if (jobConf.getUseNewMapper()) {
+                ((Writable) splits[i]).readFields(dis);
+            } else {
+                ((Writable) splits[i]).readFields(dis);
+            }
         }
         return splits;
     }
diff --git a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/join/NestedLoopJoin.java b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/join/NestedLoopJoin.java
index 3e0b3ea..7e84229 100644
--- a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/join/NestedLoopJoin.java
+++ b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/join/NestedLoopJoin.java
@@ -130,7 +130,8 @@
     }
 
     public void closeJoin(IFrameWriter writer) throws HyracksDataException {
-        for (ByteBuffer outBuffer : outBuffers) {
+        for (int i = 0; i < currentMemSize; i++) {
+            ByteBuffer outBuffer = outBuffers.get(i);
             runFileReader = runFileWriter.createReader();
             runFileReader.open();
             while (runFileReader.nextFrame(innerBuffer)) {
diff --git a/hyracks-examples/hadoop-compat-example/.project b/hyracks-examples/hadoop-compat-example/.project
new file mode 100644
index 0000000..4e057cd
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>text-example</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/hyracks-examples/hadoop-compat-example/.settings/org.maven.ide.eclipse.prefs b/hyracks-examples/hadoop-compat-example/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..4562b1a
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Tue Sep 28 14:37:42 PDT 2010
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatapp/.classpath b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/.classpath
new file mode 100644
index 0000000..f2cc5f7
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatapp/.project b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/.project
new file mode 100644
index 0000000..4f3af14
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>textapp</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatapp/.settings/org.eclipse.jdt.core.prefs b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..692202d
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,13 @@
+#Thu May 19 22:55:12 PDT 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatapp/.settings/org.maven.ide.eclipse.prefs b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..4562b1a
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Tue Sep 28 14:37:42 PDT 2010
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatapp/conf/local_cluster.conf b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/conf/local_cluster.conf
new file mode 100644
index 0000000..3669616
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/conf/local_cluster.conf
@@ -0,0 +1,2 @@
+clusterControllerHost=localhost
+fs.default.name=file:///
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file1.txt b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file1.txt
new file mode 100644
index 0000000..c4c3130
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file1.txt
@@ -0,0 +1,13052 @@
+﻿Project Gutenberg's The Adventures of Sherlock Holmes, by Arthur Conan Doyle
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever.  You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.net
+
+
+Title: The Adventures of Sherlock Holmes
+
+Author: Arthur Conan Doyle
+
+Posting Date: April 18, 2011 [EBook #1661]
+First Posted: November 29, 2002
+
+Language: English
+
+
+*** START OF THIS PROJECT GUTENBERG EBOOK THE ADVENTURES OF SHERLOCK HOLMES ***
+
+
+
+
+Produced by an anonymous Project Gutenberg volunteer and Jose Menendez
+
+
+
+
+
+
+
+
+
+THE ADVENTURES OF SHERLOCK HOLMES
+
+by
+
+SIR ARTHUR CONAN DOYLE
+
+
+
+   I. A Scandal in Bohemia
+  II. The Red-headed League
+ III. A Case of Identity
+  IV. The Boscombe Valley Mystery
+   V. The Five Orange Pips
+  VI. The Man with the Twisted Lip
+ VII. The Adventure of the Blue Carbuncle
+VIII. The Adventure of the Speckled Band
+  IX. The Adventure of the Engineer's Thumb
+   X. The Adventure of the Noble Bachelor
+  XI. The Adventure of the Beryl Coronet
+ XII. The Adventure of the Copper Beeches
+
+
+
+
+ADVENTURE I. A SCANDAL IN BOHEMIA
+
+I.
+
+To Sherlock Holmes she is always THE woman. I have seldom heard
+him mention her under any other name. In his eyes she eclipses
+and predominates the whole of her sex. It was not that he felt
+any emotion akin to love for Irene Adler. All emotions, and that
+one particularly, were abhorrent to his cold, precise but
+admirably balanced mind. He was, I take it, the most perfect
+reasoning and observing machine that the world has seen, but as a
+lover he would have placed himself in a false position. He never
+spoke of the softer passions, save with a gibe and a sneer. They
+were admirable things for the observer--excellent for drawing the
+veil from men's motives and actions. But for the trained reasoner
+to admit such intrusions into his own delicate and finely
+adjusted temperament was to introduce a distracting factor which
+might throw a doubt upon all his mental results. Grit in a
+sensitive instrument, or a crack in one of his own high-power
+lenses, would not be more disturbing than a strong emotion in a
+nature such as his. And yet there was but one woman to him, and
+that woman was the late Irene Adler, of dubious and questionable
+memory.
+
+I had seen little of Holmes lately. My marriage had drifted us
+away from each other. My own complete happiness, and the
+home-centred interests which rise up around the man who first
+finds himself master of his own establishment, were sufficient to
+absorb all my attention, while Holmes, who loathed every form of
+society with his whole Bohemian soul, remained in our lodgings in
+Baker Street, buried among his old books, and alternating from
+week to week between cocaine and ambition, the drowsiness of the
+drug, and the fierce energy of his own keen nature. He was still,
+as ever, deeply attracted by the study of crime, and occupied his
+immense faculties and extraordinary powers of observation in
+following out those clues, and clearing up those mysteries which
+had been abandoned as hopeless by the official police. From time
+to time I heard some vague account of his doings: of his summons
+to Odessa in the case of the Trepoff murder, of his clearing up
+of the singular tragedy of the Atkinson brothers at Trincomalee,
+and finally of the mission which he had accomplished so
+delicately and successfully for the reigning family of Holland.
+Beyond these signs of his activity, however, which I merely
+shared with all the readers of the daily press, I knew little of
+my former friend and companion.
+
+One night--it was on the twentieth of March, 1888--I was
+returning from a journey to a patient (for I had now returned to
+civil practice), when my way led me through Baker Street. As I
+passed the well-remembered door, which must always be associated
+in my mind with my wooing, and with the dark incidents of the
+Study in Scarlet, I was seized with a keen desire to see Holmes
+again, and to know how he was employing his extraordinary powers.
+His rooms were brilliantly lit, and, even as I looked up, I saw
+his tall, spare figure pass twice in a dark silhouette against
+the blind. He was pacing the room swiftly, eagerly, with his head
+sunk upon his chest and his hands clasped behind him. To me, who
+knew his every mood and habit, his attitude and manner told their
+own story. He was at work again. He had risen out of his
+drug-created dreams and was hot upon the scent of some new
+problem. I rang the bell and was shown up to the chamber which
+had formerly been in part my own.
+
+His manner was not effusive. It seldom was; but he was glad, I
+think, to see me. With hardly a word spoken, but with a kindly
+eye, he waved me to an armchair, threw across his case of cigars,
+and indicated a spirit case and a gasogene in the corner. Then he
+stood before the fire and looked me over in his singular
+introspective fashion.
+
+"Wedlock suits you," he remarked. "I think, Watson, that you have
+put on seven and a half pounds since I saw you."
+
+"Seven!" I answered.
+
+"Indeed, I should have thought a little more. Just a trifle more,
+I fancy, Watson. And in practice again, I observe. You did not
+tell me that you intended to go into harness."
+
+"Then, how do you know?"
+
+"I see it, I deduce it. How do I know that you have been getting
+yourself very wet lately, and that you have a most clumsy and
+careless servant girl?"
+
+"My dear Holmes," said I, "this is too much. You would certainly
+have been burned, had you lived a few centuries ago. It is true
+that I had a country walk on Thursday and came home in a dreadful
+mess, but as I have changed my clothes I can't imagine how you
+deduce it. As to Mary Jane, she is incorrigible, and my wife has
+given her notice, but there, again, I fail to see how you work it
+out."
+
+He chuckled to himself and rubbed his long, nervous hands
+together.
+
+"It is simplicity itself," said he; "my eyes tell me that on the
+inside of your left shoe, just where the firelight strikes it,
+the leather is scored by six almost parallel cuts. Obviously they
+have been caused by someone who has very carelessly scraped round
+the edges of the sole in order to remove crusted mud from it.
+Hence, you see, my double deduction that you had been out in vile
+weather, and that you had a particularly malignant boot-slitting
+specimen of the London slavey. As to your practice, if a
+gentleman walks into my rooms smelling of iodoform, with a black
+mark of nitrate of silver upon his right forefinger, and a bulge
+on the right side of his top-hat to show where he has secreted
+his stethoscope, I must be dull, indeed, if I do not pronounce
+him to be an active member of the medical profession."
+
+I could not help laughing at the ease with which he explained his
+process of deduction. "When I hear you give your reasons," I
+remarked, "the thing always appears to me to be so ridiculously
+simple that I could easily do it myself, though at each
+successive instance of your reasoning I am baffled until you
+explain your process. And yet I believe that my eyes are as good
+as yours."
+
+"Quite so," he answered, lighting a cigarette, and throwing
+himself down into an armchair. "You see, but you do not observe.
+The distinction is clear. For example, you have frequently seen
+the steps which lead up from the hall to this room."
+
+"Frequently."
+
+"How often?"
+
+"Well, some hundreds of times."
+
+"Then how many are there?"
+
+"How many? I don't know."
+
+"Quite so! You have not observed. And yet you have seen. That is
+just my point. Now, I know that there are seventeen steps,
+because I have both seen and observed. By-the-way, since you are
+interested in these little problems, and since you are good
+enough to chronicle one or two of my trifling experiences, you
+may be interested in this." He threw over a sheet of thick,
+pink-tinted note-paper which had been lying open upon the table.
+"It came by the last post," said he. "Read it aloud."
+
+The note was undated, and without either signature or address.
+
+"There will call upon you to-night, at a quarter to eight
+o'clock," it said, "a gentleman who desires to consult you upon a
+matter of the very deepest moment. Your recent services to one of
+the royal houses of Europe have shown that you are one who may
+safely be trusted with matters which are of an importance which
+can hardly be exaggerated. This account of you we have from all
+quarters received. Be in your chamber then at that hour, and do
+not take it amiss if your visitor wear a mask."
+
+"This is indeed a mystery," I remarked. "What do you imagine that
+it means?"
+
+"I have no data yet. It is a capital mistake to theorize before
+one has data. Insensibly one begins to twist facts to suit
+theories, instead of theories to suit facts. But the note itself.
+What do you deduce from it?"
+
+I carefully examined the writing, and the paper upon which it was
+written.
+
+"The man who wrote it was presumably well to do," I remarked,
+endeavouring to imitate my companion's processes. "Such paper
+could not be bought under half a crown a packet. It is peculiarly
+strong and stiff."
+
+"Peculiar--that is the very word," said Holmes. "It is not an
+English paper at all. Hold it up to the light."
+
+I did so, and saw a large "E" with a small "g," a "P," and a
+large "G" with a small "t" woven into the texture of the paper.
+
+"What do you make of that?" asked Holmes.
+
+"The name of the maker, no doubt; or his monogram, rather."
+
+"Not at all. The 'G' with the small 't' stands for
+'Gesellschaft,' which is the German for 'Company.' It is a
+customary contraction like our 'Co.' 'P,' of course, stands for
+'Papier.' Now for the 'Eg.' Let us glance at our Continental
+Gazetteer." He took down a heavy brown volume from his shelves.
+"Eglow, Eglonitz--here we are, Egria. It is in a German-speaking
+country--in Bohemia, not far from Carlsbad. 'Remarkable as being
+the scene of the death of Wallenstein, and for its numerous
+glass-factories and paper-mills.' Ha, ha, my boy, what do you
+make of that?" His eyes sparkled, and he sent up a great blue
+triumphant cloud from his cigarette.
+
+"The paper was made in Bohemia," I said.
+
+"Precisely. And the man who wrote the note is a German. Do you
+note the peculiar construction of the sentence--'This account of
+you we have from all quarters received.' A Frenchman or Russian
+could not have written that. It is the German who is so
+uncourteous to his verbs. It only remains, therefore, to discover
+what is wanted by this German who writes upon Bohemian paper and
+prefers wearing a mask to showing his face. And here he comes, if
+I am not mistaken, to resolve all our doubts."
+
+As he spoke there was the sharp sound of horses' hoofs and
+grating wheels against the curb, followed by a sharp pull at the
+bell. Holmes whistled.
+
+"A pair, by the sound," said he. "Yes," he continued, glancing
+out of the window. "A nice little brougham and a pair of
+beauties. A hundred and fifty guineas apiece. There's money in
+this case, Watson, if there is nothing else."
+
+"I think that I had better go, Holmes."
+
+"Not a bit, Doctor. Stay where you are. I am lost without my
+Boswell. And this promises to be interesting. It would be a pity
+to miss it."
+
+"But your client--"
+
+"Never mind him. I may want your help, and so may he. Here he
+comes. Sit down in that armchair, Doctor, and give us your best
+attention."
+
+A slow and heavy step, which had been heard upon the stairs and
+in the passage, paused immediately outside the door. Then there
+was a loud and authoritative tap.
+
+"Come in!" said Holmes.
+
+A man entered who could hardly have been less than six feet six
+inches in height, with the chest and limbs of a Hercules. His
+dress was rich with a richness which would, in England, be looked
+upon as akin to bad taste. Heavy bands of astrakhan were slashed
+across the sleeves and fronts of his double-breasted coat, while
+the deep blue cloak which was thrown over his shoulders was lined
+with flame-coloured silk and secured at the neck with a brooch
+which consisted of a single flaming beryl. Boots which extended
+halfway up his calves, and which were trimmed at the tops with
+rich brown fur, completed the impression of barbaric opulence
+which was suggested by his whole appearance. He carried a
+broad-brimmed hat in his hand, while he wore across the upper
+part of his face, extending down past the cheekbones, a black
+vizard mask, which he had apparently adjusted that very moment,
+for his hand was still raised to it as he entered. From the lower
+part of the face he appeared to be a man of strong character,
+with a thick, hanging lip, and a long, straight chin suggestive
+of resolution pushed to the length of obstinacy.
+
+"You had my note?" he asked with a deep harsh voice and a
+strongly marked German accent. "I told you that I would call." He
+looked from one to the other of us, as if uncertain which to
+address.
+
+"Pray take a seat," said Holmes. "This is my friend and
+colleague, Dr. Watson, who is occasionally good enough to help me
+in my cases. Whom have I the honour to address?"
+
+"You may address me as the Count Von Kramm, a Bohemian nobleman.
+I understand that this gentleman, your friend, is a man of honour
+and discretion, whom I may trust with a matter of the most
+extreme importance. If not, I should much prefer to communicate
+with you alone."
+
+I rose to go, but Holmes caught me by the wrist and pushed me
+back into my chair. "It is both, or none," said he. "You may say
+before this gentleman anything which you may say to me."
+
+The Count shrugged his broad shoulders. "Then I must begin," said
+he, "by binding you both to absolute secrecy for two years; at
+the end of that time the matter will be of no importance. At
+present it is not too much to say that it is of such weight it
+may have an influence upon European history."
+
+"I promise," said Holmes.
+
+"And I."
+
+"You will excuse this mask," continued our strange visitor. "The
+august person who employs me wishes his agent to be unknown to
+you, and I may confess at once that the title by which I have
+just called myself is not exactly my own."
+
+"I was aware of it," said Holmes dryly.
+
+"The circumstances are of great delicacy, and every precaution
+has to be taken to quench what might grow to be an immense
+scandal and seriously compromise one of the reigning families of
+Europe. To speak plainly, the matter implicates the great House
+of Ormstein, hereditary kings of Bohemia."
+
+"I was also aware of that," murmured Holmes, settling himself
+down in his armchair and closing his eyes.
+
+Our visitor glanced with some apparent surprise at the languid,
+lounging figure of the man who had been no doubt depicted to him
+as the most incisive reasoner and most energetic agent in Europe.
+Holmes slowly reopened his eyes and looked impatiently at his
+gigantic client.
+
+"If your Majesty would condescend to state your case," he
+remarked, "I should be better able to advise you."
+
+The man sprang from his chair and paced up and down the room in
+uncontrollable agitation. Then, with a gesture of desperation, he
+tore the mask from his face and hurled it upon the ground. "You
+are right," he cried; "I am the King. Why should I attempt to
+conceal it?"
+
+"Why, indeed?" murmured Holmes. "Your Majesty had not spoken
+before I was aware that I was addressing Wilhelm Gottsreich
+Sigismond von Ormstein, Grand Duke of Cassel-Felstein, and
+hereditary King of Bohemia."
+
+"But you can understand," said our strange visitor, sitting down
+once more and passing his hand over his high white forehead, "you
+can understand that I am not accustomed to doing such business in
+my own person. Yet the matter was so delicate that I could not
+confide it to an agent without putting myself in his power. I
+have come incognito from Prague for the purpose of consulting
+you."
+
+"Then, pray consult," said Holmes, shutting his eyes once more.
+
+"The facts are briefly these: Some five years ago, during a
+lengthy visit to Warsaw, I made the acquaintance of the well-known
+adventuress, Irene Adler. The name is no doubt familiar to you."
+
+"Kindly look her up in my index, Doctor," murmured Holmes without
+opening his eyes. For many years he had adopted a system of
+docketing all paragraphs concerning men and things, so that it
+was difficult to name a subject or a person on which he could not
+at once furnish information. In this case I found her biography
+sandwiched in between that of a Hebrew rabbi and that of a
+staff-commander who had written a monograph upon the deep-sea
+fishes.
+
+"Let me see!" said Holmes. "Hum! Born in New Jersey in the year
+1858. Contralto--hum! La Scala, hum! Prima donna Imperial Opera
+of Warsaw--yes! Retired from operatic stage--ha! Living in
+London--quite so! Your Majesty, as I understand, became entangled
+with this young person, wrote her some compromising letters, and
+is now desirous of getting those letters back."
+
+"Precisely so. But how--"
+
+"Was there a secret marriage?"
+
+"None."
+
+"No legal papers or certificates?"
+
+"None."
+
+"Then I fail to follow your Majesty. If this young person should
+produce her letters for blackmailing or other purposes, how is
+she to prove their authenticity?"
+
+"There is the writing."
+
+"Pooh, pooh! Forgery."
+
+"My private note-paper."
+
+"Stolen."
+
+"My own seal."
+
+"Imitated."
+
+"My photograph."
+
+"Bought."
+
+"We were both in the photograph."
+
+"Oh, dear! That is very bad! Your Majesty has indeed committed an
+indiscretion."
+
+"I was mad--insane."
+
+"You have compromised yourself seriously."
+
+"I was only Crown Prince then. I was young. I am but thirty now."
+
+"It must be recovered."
+
+"We have tried and failed."
+
+"Your Majesty must pay. It must be bought."
+
+"She will not sell."
+
+"Stolen, then."
+
+"Five attempts have been made. Twice burglars in my pay ransacked
+her house. Once we diverted her luggage when she travelled. Twice
+she has been waylaid. There has been no result."
+
+"No sign of it?"
+
+"Absolutely none."
+
+Holmes laughed. "It is quite a pretty little problem," said he.
+
+"But a very serious one to me," returned the King reproachfully.
+
+"Very, indeed. And what does she propose to do with the
+photograph?"
+
+"To ruin me."
+
+"But how?"
+
+"I am about to be married."
+
+"So I have heard."
+
+"To Clotilde Lothman von Saxe-Meningen, second daughter of the
+King of Scandinavia. You may know the strict principles of her
+family. She is herself the very soul of delicacy. A shadow of a
+doubt as to my conduct would bring the matter to an end."
+
+"And Irene Adler?"
+
+"Threatens to send them the photograph. And she will do it. I
+know that she will do it. You do not know her, but she has a soul
+of steel. She has the face of the most beautiful of women, and
+the mind of the most resolute of men. Rather than I should marry
+another woman, there are no lengths to which she would not
+go--none."
+
+"You are sure that she has not sent it yet?"
+
+"I am sure."
+
+"And why?"
+
+"Because she has said that she would send it on the day when the
+betrothal was publicly proclaimed. That will be next Monday."
+
+"Oh, then we have three days yet," said Holmes with a yawn. "That
+is very fortunate, as I have one or two matters of importance to
+look into just at present. Your Majesty will, of course, stay in
+London for the present?"
+
+"Certainly. You will find me at the Langham under the name of the
+Count Von Kramm."
+
+"Then I shall drop you a line to let you know how we progress."
+
+"Pray do so. I shall be all anxiety."
+
+"Then, as to money?"
+
+"You have carte blanche."
+
+"Absolutely?"
+
+"I tell you that I would give one of the provinces of my kingdom
+to have that photograph."
+
+"And for present expenses?"
+
+The King took a heavy chamois leather bag from under his cloak
+and laid it on the table.
+
+"There are three hundred pounds in gold and seven hundred in
+notes," he said.
+
+Holmes scribbled a receipt upon a sheet of his note-book and
+handed it to him.
+
+"And Mademoiselle's address?" he asked.
+
+"Is Briony Lodge, Serpentine Avenue, St. John's Wood."
+
+Holmes took a note of it. "One other question," said he. "Was the
+photograph a cabinet?"
+
+"It was."
+
+"Then, good-night, your Majesty, and I trust that we shall soon
+have some good news for you. And good-night, Watson," he added,
+as the wheels of the royal brougham rolled down the street. "If
+you will be good enough to call to-morrow afternoon at three
+o'clock I should like to chat this little matter over with you."
+
+
+II.
+
+At three o'clock precisely I was at Baker Street, but Holmes had
+not yet returned. The landlady informed me that he had left the
+house shortly after eight o'clock in the morning. I sat down
+beside the fire, however, with the intention of awaiting him,
+however long he might be. I was already deeply interested in his
+inquiry, for, though it was surrounded by none of the grim and
+strange features which were associated with the two crimes which
+I have already recorded, still, the nature of the case and the
+exalted station of his client gave it a character of its own.
+Indeed, apart from the nature of the investigation which my
+friend had on hand, there was something in his masterly grasp of
+a situation, and his keen, incisive reasoning, which made it a
+pleasure to me to study his system of work, and to follow the
+quick, subtle methods by which he disentangled the most
+inextricable mysteries. So accustomed was I to his invariable
+success that the very possibility of his failing had ceased to
+enter into my head.
+
+It was close upon four before the door opened, and a
+drunken-looking groom, ill-kempt and side-whiskered, with an
+inflamed face and disreputable clothes, walked into the room.
+Accustomed as I was to my friend's amazing powers in the use of
+disguises, I had to look three times before I was certain that it
+was indeed he. With a nod he vanished into the bedroom, whence he
+emerged in five minutes tweed-suited and respectable, as of old.
+Putting his hands into his pockets, he stretched out his legs in
+front of the fire and laughed heartily for some minutes.
+
+"Well, really!" he cried, and then he choked and laughed again
+until he was obliged to lie back, limp and helpless, in the
+chair.
+
+"What is it?"
+
+"It's quite too funny. I am sure you could never guess how I
+employed my morning, or what I ended by doing."
+
+"I can't imagine. I suppose that you have been watching the
+habits, and perhaps the house, of Miss Irene Adler."
+
+"Quite so; but the sequel was rather unusual. I will tell you,
+however. I left the house a little after eight o'clock this
+morning in the character of a groom out of work. There is a
+wonderful sympathy and freemasonry among horsey men. Be one of
+them, and you will know all that there is to know. I soon found
+Briony Lodge. It is a bijou villa, with a garden at the back, but
+built out in front right up to the road, two stories. Chubb lock
+to the door. Large sitting-room on the right side, well
+furnished, with long windows almost to the floor, and those
+preposterous English window fasteners which a child could open.
+Behind there was nothing remarkable, save that the passage window
+could be reached from the top of the coach-house. I walked round
+it and examined it closely from every point of view, but without
+noting anything else of interest.
+
+"I then lounged down the street and found, as I expected, that
+there was a mews in a lane which runs down by one wall of the
+garden. I lent the ostlers a hand in rubbing down their horses,
+and received in exchange twopence, a glass of half and half, two
+fills of shag tobacco, and as much information as I could desire
+about Miss Adler, to say nothing of half a dozen other people in
+the neighbourhood in whom I was not in the least interested, but
+whose biographies I was compelled to listen to."
+
+"And what of Irene Adler?" I asked.
+
+"Oh, she has turned all the men's heads down in that part. She is
+the daintiest thing under a bonnet on this planet. So say the
+Serpentine-mews, to a man. She lives quietly, sings at concerts,
+drives out at five every day, and returns at seven sharp for
+dinner. Seldom goes out at other times, except when she sings.
+Has only one male visitor, but a good deal of him. He is dark,
+handsome, and dashing, never calls less than once a day, and
+often twice. He is a Mr. Godfrey Norton, of the Inner Temple. See
+the advantages of a cabman as a confidant. They had driven him
+home a dozen times from Serpentine-mews, and knew all about him.
+When I had listened to all they had to tell, I began to walk up
+and down near Briony Lodge once more, and to think over my plan
+of campaign.
+
+"This Godfrey Norton was evidently an important factor in the
+matter. He was a lawyer. That sounded ominous. What was the
+relation between them, and what the object of his repeated
+visits? Was she his client, his friend, or his mistress? If the
+former, she had probably transferred the photograph to his
+keeping. If the latter, it was less likely. On the issue of this
+question depended whether I should continue my work at Briony
+Lodge, or turn my attention to the gentleman's chambers in the
+Temple. It was a delicate point, and it widened the field of my
+inquiry. I fear that I bore you with these details, but I have to
+let you see my little difficulties, if you are to understand the
+situation."
+
+"I am following you closely," I answered.
+
+"I was still balancing the matter in my mind when a hansom cab
+drove up to Briony Lodge, and a gentleman sprang out. He was a
+remarkably handsome man, dark, aquiline, and moustached--evidently
+the man of whom I had heard. He appeared to be in a
+great hurry, shouted to the cabman to wait, and brushed past the
+maid who opened the door with the air of a man who was thoroughly
+at home.
+
+"He was in the house about half an hour, and I could catch
+glimpses of him in the windows of the sitting-room, pacing up and
+down, talking excitedly, and waving his arms. Of her I could see
+nothing. Presently he emerged, looking even more flurried than
+before. As he stepped up to the cab, he pulled a gold watch from
+his pocket and looked at it earnestly, 'Drive like the devil,' he
+shouted, 'first to Gross & Hankey's in Regent Street, and then to
+the Church of St. Monica in the Edgeware Road. Half a guinea if
+you do it in twenty minutes!'
+
+"Away they went, and I was just wondering whether I should not do
+well to follow them when up the lane came a neat little landau,
+the coachman with his coat only half-buttoned, and his tie under
+his ear, while all the tags of his harness were sticking out of
+the buckles. It hadn't pulled up before she shot out of the hall
+door and into it. I only caught a glimpse of her at the moment,
+but she was a lovely woman, with a face that a man might die for.
+
+"'The Church of St. Monica, John,' she cried, 'and half a
+sovereign if you reach it in twenty minutes.'
+
+"This was quite too good to lose, Watson. I was just balancing
+whether I should run for it, or whether I should perch behind her
+landau when a cab came through the street. The driver looked
+twice at such a shabby fare, but I jumped in before he could
+object. 'The Church of St. Monica,' said I, 'and half a sovereign
+if you reach it in twenty minutes.' It was twenty-five minutes to
+twelve, and of course it was clear enough what was in the wind.
+
+"My cabby drove fast. I don't think I ever drove faster, but the
+others were there before us. The cab and the landau with their
+steaming horses were in front of the door when I arrived. I paid
+the man and hurried into the church. There was not a soul there
+save the two whom I had followed and a surpliced clergyman, who
+seemed to be expostulating with them. They were all three
+standing in a knot in front of the altar. I lounged up the side
+aisle like any other idler who has dropped into a church.
+Suddenly, to my surprise, the three at the altar faced round to
+me, and Godfrey Norton came running as hard as he could towards
+me.
+
+"'Thank God,' he cried. 'You'll do. Come! Come!'
+
+"'What then?' I asked.
+
+"'Come, man, come, only three minutes, or it won't be legal.'
+
+"I was half-dragged up to the altar, and before I knew where I was
+I found myself mumbling responses which were whispered in my ear,
+and vouching for things of which I knew nothing, and generally
+assisting in the secure tying up of Irene Adler, spinster, to
+Godfrey Norton, bachelor. It was all done in an instant, and
+there was the gentleman thanking me on the one side and the lady
+on the other, while the clergyman beamed on me in front. It was
+the most preposterous position in which I ever found myself in my
+life, and it was the thought of it that started me laughing just
+now. It seems that there had been some informality about their
+license, that the clergyman absolutely refused to marry them
+without a witness of some sort, and that my lucky appearance
+saved the bridegroom from having to sally out into the streets in
+search of a best man. The bride gave me a sovereign, and I mean
+to wear it on my watch-chain in memory of the occasion."
+
+"This is a very unexpected turn of affairs," said I; "and what
+then?"
+
+"Well, I found my plans very seriously menaced. It looked as if
+the pair might take an immediate departure, and so necessitate
+very prompt and energetic measures on my part. At the church
+door, however, they separated, he driving back to the Temple, and
+she to her own house. 'I shall drive out in the park at five as
+usual,' she said as she left him. I heard no more. They drove
+away in different directions, and I went off to make my own
+arrangements."
+
+"Which are?"
+
+"Some cold beef and a glass of beer," he answered, ringing the
+bell. "I have been too busy to think of food, and I am likely to
+be busier still this evening. By the way, Doctor, I shall want
+your co-operation."
+
+"I shall be delighted."
+
+"You don't mind breaking the law?"
+
+"Not in the least."
+
+"Nor running a chance of arrest?"
+
+"Not in a good cause."
+
+"Oh, the cause is excellent!"
+
+"Then I am your man."
+
+"I was sure that I might rely on you."
+
+"But what is it you wish?"
+
+"When Mrs. Turner has brought in the tray I will make it clear to
+you. Now," he said as he turned hungrily on the simple fare that
+our landlady had provided, "I must discuss it while I eat, for I
+have not much time. It is nearly five now. In two hours we must
+be on the scene of action. Miss Irene, or Madame, rather, returns
+from her drive at seven. We must be at Briony Lodge to meet her."
+
+"And what then?"
+
+"You must leave that to me. I have already arranged what is to
+occur. There is only one point on which I must insist. You must
+not interfere, come what may. You understand?"
+
+"I am to be neutral?"
+
+"To do nothing whatever. There will probably be some small
+unpleasantness. Do not join in it. It will end in my being
+conveyed into the house. Four or five minutes afterwards the
+sitting-room window will open. You are to station yourself close
+to that open window."
+
+"Yes."
+
+"You are to watch me, for I will be visible to you."
+
+"Yes."
+
+"And when I raise my hand--so--you will throw into the room what
+I give you to throw, and will, at the same time, raise the cry of
+fire. You quite follow me?"
+
+"Entirely."
+
+"It is nothing very formidable," he said, taking a long cigar-shaped
+roll from his pocket. "It is an ordinary plumber's smoke-rocket,
+fitted with a cap at either end to make it self-lighting.
+Your task is confined to that. When you raise your cry of fire,
+it will be taken up by quite a number of people. You may then
+walk to the end of the street, and I will rejoin you in ten
+minutes. I hope that I have made myself clear?"
+
+"I am to remain neutral, to get near the window, to watch you,
+and at the signal to throw in this object, then to raise the cry
+of fire, and to wait you at the corner of the street."
+
+"Precisely."
+
+"Then you may entirely rely on me."
+
+"That is excellent. I think, perhaps, it is almost time that I
+prepare for the new role I have to play."
+
+He disappeared into his bedroom and returned in a few minutes in
+the character of an amiable and simple-minded Nonconformist
+clergyman. His broad black hat, his baggy trousers, his white
+tie, his sympathetic smile, and general look of peering and
+benevolent curiosity were such as Mr. John Hare alone could have
+equalled. It was not merely that Holmes changed his costume. His
+expression, his manner, his very soul seemed to vary with every
+fresh part that he assumed. The stage lost a fine actor, even as
+science lost an acute reasoner, when he became a specialist in
+crime.
+
+It was a quarter past six when we left Baker Street, and it still
+wanted ten minutes to the hour when we found ourselves in
+Serpentine Avenue. It was already dusk, and the lamps were just
+being lighted as we paced up and down in front of Briony Lodge,
+waiting for the coming of its occupant. The house was just such
+as I had pictured it from Sherlock Holmes' succinct description,
+but the locality appeared to be less private than I expected. On
+the contrary, for a small street in a quiet neighbourhood, it was
+remarkably animated. There was a group of shabbily dressed men
+smoking and laughing in a corner, a scissors-grinder with his
+wheel, two guardsmen who were flirting with a nurse-girl, and
+several well-dressed young men who were lounging up and down with
+cigars in their mouths.
+
+"You see," remarked Holmes, as we paced to and fro in front of
+the house, "this marriage rather simplifies matters. The
+photograph becomes a double-edged weapon now. The chances are
+that she would be as averse to its being seen by Mr. Godfrey
+Norton, as our client is to its coming to the eyes of his
+princess. Now the question is, Where are we to find the
+photograph?"
+
+"Where, indeed?"
+
+"It is most unlikely that she carries it about with her. It is
+cabinet size. Too large for easy concealment about a woman's
+dress. She knows that the King is capable of having her waylaid
+and searched. Two attempts of the sort have already been made. We
+may take it, then, that she does not carry it about with her."
+
+"Where, then?"
+
+"Her banker or her lawyer. There is that double possibility. But
+I am inclined to think neither. Women are naturally secretive,
+and they like to do their own secreting. Why should she hand it
+over to anyone else? She could trust her own guardianship, but
+she could not tell what indirect or political influence might be
+brought to bear upon a business man. Besides, remember that she
+had resolved to use it within a few days. It must be where she
+can lay her hands upon it. It must be in her own house."
+
+"But it has twice been burgled."
+
+"Pshaw! They did not know how to look."
+
+"But how will you look?"
+
+"I will not look."
+
+"What then?"
+
+"I will get her to show me."
+
+"But she will refuse."
+
+"She will not be able to. But I hear the rumble of wheels. It is
+her carriage. Now carry out my orders to the letter."
+
+As he spoke the gleam of the side-lights of a carriage came round
+the curve of the avenue. It was a smart little landau which
+rattled up to the door of Briony Lodge. As it pulled up, one of
+the loafing men at the corner dashed forward to open the door in
+the hope of earning a copper, but was elbowed away by another
+loafer, who had rushed up with the same intention. A fierce
+quarrel broke out, which was increased by the two guardsmen, who
+took sides with one of the loungers, and by the scissors-grinder,
+who was equally hot upon the other side. A blow was struck, and
+in an instant the lady, who had stepped from her carriage, was
+the centre of a little knot of flushed and struggling men, who
+struck savagely at each other with their fists and sticks. Holmes
+dashed into the crowd to protect the lady; but just as he reached
+her he gave a cry and dropped to the ground, with the blood
+running freely down his face. At his fall the guardsmen took to
+their heels in one direction and the loungers in the other, while
+a number of better-dressed people, who had watched the scuffle
+without taking part in it, crowded in to help the lady and to
+attend to the injured man. Irene Adler, as I will still call her,
+had hurried up the steps; but she stood at the top with her
+superb figure outlined against the lights of the hall, looking
+back into the street.
+
+"Is the poor gentleman much hurt?" she asked.
+
+"He is dead," cried several voices.
+
+"No, no, there's life in him!" shouted another. "But he'll be
+gone before you can get him to hospital."
+
+"He's a brave fellow," said a woman. "They would have had the
+lady's purse and watch if it hadn't been for him. They were a
+gang, and a rough one, too. Ah, he's breathing now."
+
+"He can't lie in the street. May we bring him in, marm?"
+
+"Surely. Bring him into the sitting-room. There is a comfortable
+sofa. This way, please!"
+
+Slowly and solemnly he was borne into Briony Lodge and laid out
+in the principal room, while I still observed the proceedings
+from my post by the window. The lamps had been lit, but the
+blinds had not been drawn, so that I could see Holmes as he lay
+upon the couch. I do not know whether he was seized with
+compunction at that moment for the part he was playing, but I
+know that I never felt more heartily ashamed of myself in my life
+than when I saw the beautiful creature against whom I was
+conspiring, or the grace and kindliness with which she waited
+upon the injured man. And yet it would be the blackest treachery
+to Holmes to draw back now from the part which he had intrusted
+to me. I hardened my heart, and took the smoke-rocket from under
+my ulster. After all, I thought, we are not injuring her. We are
+but preventing her from injuring another.
+
+Holmes had sat up upon the couch, and I saw him motion like a man
+who is in need of air. A maid rushed across and threw open the
+window. At the same instant I saw him raise his hand and at the
+signal I tossed my rocket into the room with a cry of "Fire!" The
+word was no sooner out of my mouth than the whole crowd of
+spectators, well dressed and ill--gentlemen, ostlers, and
+servant-maids--joined in a general shriek of "Fire!" Thick clouds
+of smoke curled through the room and out at the open window. I
+caught a glimpse of rushing figures, and a moment later the voice
+of Holmes from within assuring them that it was a false alarm.
+Slipping through the shouting crowd I made my way to the corner
+of the street, and in ten minutes was rejoiced to find my
+friend's arm in mine, and to get away from the scene of uproar.
+He walked swiftly and in silence for some few minutes until we
+had turned down one of the quiet streets which lead towards the
+Edgeware Road.
+
+"You did it very nicely, Doctor," he remarked. "Nothing could
+have been better. It is all right."
+
+"You have the photograph?"
+
+"I know where it is."
+
+"And how did you find out?"
+
+"She showed me, as I told you she would."
+
+"I am still in the dark."
+
+"I do not wish to make a mystery," said he, laughing. "The matter
+was perfectly simple. You, of course, saw that everyone in the
+street was an accomplice. They were all engaged for the evening."
+
+"I guessed as much."
+
+"Then, when the row broke out, I had a little moist red paint in
+the palm of my hand. I rushed forward, fell down, clapped my hand
+to my face, and became a piteous spectacle. It is an old trick."
+
+"That also I could fathom."
+
+"Then they carried me in. She was bound to have me in. What else
+could she do? And into her sitting-room, which was the very room
+which I suspected. It lay between that and her bedroom, and I was
+determined to see which. They laid me on a couch, I motioned for
+air, they were compelled to open the window, and you had your
+chance."
+
+"How did that help you?"
+
+"It was all-important. When a woman thinks that her house is on
+fire, her instinct is at once to rush to the thing which she
+values most. It is a perfectly overpowering impulse, and I have
+more than once taken advantage of it. In the case of the
+Darlington substitution scandal it was of use to me, and also in
+the Arnsworth Castle business. A married woman grabs at her baby;
+an unmarried one reaches for her jewel-box. Now it was clear to
+me that our lady of to-day had nothing in the house more precious
+to her than what we are in quest of. She would rush to secure it.
+The alarm of fire was admirably done. The smoke and shouting were
+enough to shake nerves of steel. She responded beautifully. The
+photograph is in a recess behind a sliding panel just above the
+right bell-pull. She was there in an instant, and I caught a
+glimpse of it as she half-drew it out. When I cried out that it
+was a false alarm, she replaced it, glanced at the rocket, rushed
+from the room, and I have not seen her since. I rose, and, making
+my excuses, escaped from the house. I hesitated whether to
+attempt to secure the photograph at once; but the coachman had
+come in, and as he was watching me narrowly it seemed safer to
+wait. A little over-precipitance may ruin all."
+
+"And now?" I asked.
+
+"Our quest is practically finished. I shall call with the King
+to-morrow, and with you, if you care to come with us. We will be
+shown into the sitting-room to wait for the lady, but it is
+probable that when she comes she may find neither us nor the
+photograph. It might be a satisfaction to his Majesty to regain
+it with his own hands."
+
+"And when will you call?"
+
+"At eight in the morning. She will not be up, so that we shall
+have a clear field. Besides, we must be prompt, for this marriage
+may mean a complete change in her life and habits. I must wire to
+the King without delay."
+
+We had reached Baker Street and had stopped at the door. He was
+searching his pockets for the key when someone passing said:
+
+"Good-night, Mister Sherlock Holmes."
+
+There were several people on the pavement at the time, but the
+greeting appeared to come from a slim youth in an ulster who had
+hurried by.
+
+"I've heard that voice before," said Holmes, staring down the
+dimly lit street. "Now, I wonder who the deuce that could have
+been."
+
+
+III.
+
+I slept at Baker Street that night, and we were engaged upon our
+toast and coffee in the morning when the King of Bohemia rushed
+into the room.
+
+"You have really got it!" he cried, grasping Sherlock Holmes by
+either shoulder and looking eagerly into his face.
+
+"Not yet."
+
+"But you have hopes?"
+
+"I have hopes."
+
+"Then, come. I am all impatience to be gone."
+
+"We must have a cab."
+
+"No, my brougham is waiting."
+
+"Then that will simplify matters." We descended and started off
+once more for Briony Lodge.
+
+"Irene Adler is married," remarked Holmes.
+
+"Married! When?"
+
+"Yesterday."
+
+"But to whom?"
+
+"To an English lawyer named Norton."
+
+"But she could not love him."
+
+"I am in hopes that she does."
+
+"And why in hopes?"
+
+"Because it would spare your Majesty all fear of future
+annoyance. If the lady loves her husband, she does not love your
+Majesty. If she does not love your Majesty, there is no reason
+why she should interfere with your Majesty's plan."
+
+"It is true. And yet--Well! I wish she had been of my own
+station! What a queen she would have made!" He relapsed into a
+moody silence, which was not broken until we drew up in
+Serpentine Avenue.
+
+The door of Briony Lodge was open, and an elderly woman stood
+upon the steps. She watched us with a sardonic eye as we stepped
+from the brougham.
+
+"Mr. Sherlock Holmes, I believe?" said she.
+
+"I am Mr. Holmes," answered my companion, looking at her with a
+questioning and rather startled gaze.
+
+"Indeed! My mistress told me that you were likely to call. She
+left this morning with her husband by the 5:15 train from Charing
+Cross for the Continent."
+
+"What!" Sherlock Holmes staggered back, white with chagrin and
+surprise. "Do you mean that she has left England?"
+
+"Never to return."
+
+"And the papers?" asked the King hoarsely. "All is lost."
+
+"We shall see." He pushed past the servant and rushed into the
+drawing-room, followed by the King and myself. The furniture was
+scattered about in every direction, with dismantled shelves and
+open drawers, as if the lady had hurriedly ransacked them before
+her flight. Holmes rushed at the bell-pull, tore back a small
+sliding shutter, and, plunging in his hand, pulled out a
+photograph and a letter. The photograph was of Irene Adler
+herself in evening dress, the letter was superscribed to
+"Sherlock Holmes, Esq. To be left till called for." My friend
+tore it open and we all three read it together. It was dated at
+midnight of the preceding night and ran in this way:
+
+"MY DEAR MR. SHERLOCK HOLMES,--You really did it very well. You
+took me in completely. Until after the alarm of fire, I had not a
+suspicion. But then, when I found how I had betrayed myself, I
+began to think. I had been warned against you months ago. I had
+been told that if the King employed an agent it would certainly
+be you. And your address had been given me. Yet, with all this,
+you made me reveal what you wanted to know. Even after I became
+suspicious, I found it hard to think evil of such a dear, kind
+old clergyman. But, you know, I have been trained as an actress
+myself. Male costume is nothing new to me. I often take advantage
+of the freedom which it gives. I sent John, the coachman, to
+watch you, ran up stairs, got into my walking-clothes, as I call
+them, and came down just as you departed.
+
+"Well, I followed you to your door, and so made sure that I was
+really an object of interest to the celebrated Mr. Sherlock
+Holmes. Then I, rather imprudently, wished you good-night, and
+started for the Temple to see my husband.
+
+"We both thought the best resource was flight, when pursued by
+so formidable an antagonist; so you will find the nest empty when
+you call to-morrow. As to the photograph, your client may rest in
+peace. I love and am loved by a better man than he. The King may
+do what he will without hindrance from one whom he has cruelly
+wronged. I keep it only to safeguard myself, and to preserve a
+weapon which will always secure me from any steps which he might
+take in the future. I leave a photograph which he might care to
+possess; and I remain, dear Mr. Sherlock Holmes,
+
+                                      "Very truly yours,
+                                   "IRENE NORTON, née ADLER."
+
+"What a woman--oh, what a woman!" cried the King of Bohemia, when
+we had all three read this epistle. "Did I not tell you how quick
+and resolute she was? Would she not have made an admirable queen?
+Is it not a pity that she was not on my level?"
+
+"From what I have seen of the lady she seems indeed to be on a
+very different level to your Majesty," said Holmes coldly. "I am
+sorry that I have not been able to bring your Majesty's business
+to a more successful conclusion."
+
+"On the contrary, my dear sir," cried the King; "nothing could be
+more successful. I know that her word is inviolate. The
+photograph is now as safe as if it were in the fire."
+
+"I am glad to hear your Majesty say so."
+
+"I am immensely indebted to you. Pray tell me in what way I can
+reward you. This ring--" He slipped an emerald snake ring from
+his finger and held it out upon the palm of his hand.
+
+"Your Majesty has something which I should value even more
+highly," said Holmes.
+
+"You have but to name it."
+
+"This photograph!"
+
+The King stared at him in amazement.
+
+"Irene's photograph!" he cried. "Certainly, if you wish it."
+
+"I thank your Majesty. Then there is no more to be done in the
+matter. I have the honour to wish you a very good-morning." He
+bowed, and, turning away without observing the hand which the
+King had stretched out to him, he set off in my company for his
+chambers.
+
+And that was how a great scandal threatened to affect the kingdom
+of Bohemia, and how the best plans of Mr. Sherlock Holmes were
+beaten by a woman's wit. He used to make merry over the
+cleverness of women, but I have not heard him do it of late. And
+when he speaks of Irene Adler, or when he refers to her
+photograph, it is always under the honourable title of the woman.
+
+
+
+ADVENTURE II. THE RED-HEADED LEAGUE
+
+I had called upon my friend, Mr. Sherlock Holmes, one day in the
+autumn of last year and found him in deep conversation with a
+very stout, florid-faced, elderly gentleman with fiery red hair.
+With an apology for my intrusion, I was about to withdraw when
+Holmes pulled me abruptly into the room and closed the door
+behind me.
+
+"You could not possibly have come at a better time, my dear
+Watson," he said cordially.
+
+"I was afraid that you were engaged."
+
+"So I am. Very much so."
+
+"Then I can wait in the next room."
+
+"Not at all. This gentleman, Mr. Wilson, has been my partner and
+helper in many of my most successful cases, and I have no
+doubt that he will be of the utmost use to me in yours also."
+
+The stout gentleman half rose from his chair and gave a bob of
+greeting, with a quick little questioning glance from his small
+fat-encircled eyes.
+
+"Try the settee," said Holmes, relapsing into his armchair and
+putting his fingertips together, as was his custom when in
+judicial moods. "I know, my dear Watson, that you share my love
+of all that is bizarre and outside the conventions and humdrum
+routine of everyday life. You have shown your relish for it by
+the enthusiasm which has prompted you to chronicle, and, if you
+will excuse my saying so, somewhat to embellish so many of my own
+little adventures."
+
+"Your cases have indeed been of the greatest interest to me," I
+observed.
+
+"You will remember that I remarked the other day, just before we
+went into the very simple problem presented by Miss Mary
+Sutherland, that for strange effects and extraordinary
+combinations we must go to life itself, which is always far more
+daring than any effort of the imagination."
+
+"A proposition which I took the liberty of doubting."
+
+"You did, Doctor, but none the less you must come round to my
+view, for otherwise I shall keep on piling fact upon fact on you
+until your reason breaks down under them and acknowledges me to
+be right. Now, Mr. Jabez Wilson here has been good enough to call
+upon me this morning, and to begin a narrative which promises to
+be one of the most singular which I have listened to for some
+time. You have heard me remark that the strangest and most unique
+things are very often connected not with the larger but with the
+smaller crimes, and occasionally, indeed, where there is room for
+doubt whether any positive crime has been committed. As far as I
+have heard it is impossible for me to say whether the present
+case is an instance of crime or not, but the course of events is
+certainly among the most singular that I have ever listened to.
+Perhaps, Mr. Wilson, you would have the great kindness to
+recommence your narrative. I ask you not merely because my friend
+Dr. Watson has not heard the opening part but also because the
+peculiar nature of the story makes me anxious to have every
+possible detail from your lips. As a rule, when I have heard some
+slight indication of the course of events, I am able to guide
+myself by the thousands of other similar cases which occur to my
+memory. In the present instance I am forced to admit that the
+facts are, to the best of my belief, unique."
+
+The portly client puffed out his chest with an appearance of some
+little pride and pulled a dirty and wrinkled newspaper from the
+inside pocket of his greatcoat. As he glanced down the
+advertisement column, with his head thrust forward and the paper
+flattened out upon his knee, I took a good look at the man and
+endeavoured, after the fashion of my companion, to read the
+indications which might be presented by his dress or appearance.
+
+I did not gain very much, however, by my inspection. Our visitor
+bore every mark of being an average commonplace British
+tradesman, obese, pompous, and slow. He wore rather baggy grey
+shepherd's check trousers, a not over-clean black frock-coat,
+unbuttoned in the front, and a drab waistcoat with a heavy brassy
+Albert chain, and a square pierced bit of metal dangling down as
+an ornament. A frayed top-hat and a faded brown overcoat with a
+wrinkled velvet collar lay upon a chair beside him. Altogether,
+look as I would, there was nothing remarkable about the man save
+his blazing red head, and the expression of extreme chagrin and
+discontent upon his features.
+
+Sherlock Holmes' quick eye took in my occupation, and he shook
+his head with a smile as he noticed my questioning glances.
+"Beyond the obvious facts that he has at some time done manual
+labour, that he takes snuff, that he is a Freemason, that he has
+been in China, and that he has done a considerable amount of
+writing lately, I can deduce nothing else."
+
+Mr. Jabez Wilson started up in his chair, with his forefinger
+upon the paper, but his eyes upon my companion.
+
+"How, in the name of good-fortune, did you know all that, Mr.
+Holmes?" he asked. "How did you know, for example, that I did
+manual labour. It's as true as gospel, for I began as a ship's
+carpenter."
+
+"Your hands, my dear sir. Your right hand is quite a size larger
+than your left. You have worked with it, and the muscles are more
+developed."
+
+"Well, the snuff, then, and the Freemasonry?"
+
+"I won't insult your intelligence by telling you how I read that,
+especially as, rather against the strict rules of your order, you
+use an arc-and-compass breastpin."
+
+"Ah, of course, I forgot that. But the writing?"
+
+"What else can be indicated by that right cuff so very shiny for
+five inches, and the left one with the smooth patch near the
+elbow where you rest it upon the desk?"
+
+"Well, but China?"
+
+"The fish that you have tattooed immediately above your right
+wrist could only have been done in China. I have made a small
+study of tattoo marks and have even contributed to the literature
+of the subject. That trick of staining the fishes' scales of a
+delicate pink is quite peculiar to China. When, in addition, I
+see a Chinese coin hanging from your watch-chain, the matter
+becomes even more simple."
+
+Mr. Jabez Wilson laughed heavily. "Well, I never!" said he. "I
+thought at first that you had done something clever, but I see
+that there was nothing in it, after all."
+
+"I begin to think, Watson," said Holmes, "that I make a mistake
+in explaining. 'Omne ignotum pro magnifico,' you know, and my
+poor little reputation, such as it is, will suffer shipwreck if I
+am so candid. Can you not find the advertisement, Mr. Wilson?"
+
+"Yes, I have got it now," he answered with his thick red finger
+planted halfway down the column. "Here it is. This is what began
+it all. You just read it for yourself, sir."
+
+I took the paper from him and read as follows:
+
+"TO THE RED-HEADED LEAGUE: On account of the bequest of the late
+Ezekiah Hopkins, of Lebanon, Pennsylvania, U. S. A., there is now
+another vacancy open which entitles a member of the League to a
+salary of 4 pounds a week for purely nominal services. All
+red-headed men who are sound in body and mind and above the age
+of twenty-one years, are eligible. Apply in person on Monday, at
+eleven o'clock, to Duncan Ross, at the offices of the League, 7
+Pope's Court, Fleet Street."
+
+"What on earth does this mean?" I ejaculated after I had twice
+read over the extraordinary announcement.
+
+Holmes chuckled and wriggled in his chair, as was his habit when
+in high spirits. "It is a little off the beaten track, isn't it?"
+said he. "And now, Mr. Wilson, off you go at scratch and tell us
+all about yourself, your household, and the effect which this
+advertisement had upon your fortunes. You will first make a note,
+Doctor, of the paper and the date."
+
+"It is The Morning Chronicle of April 27, 1890. Just two months
+ago."
+
+"Very good. Now, Mr. Wilson?"
+
+"Well, it is just as I have been telling you, Mr. Sherlock
+Holmes," said Jabez Wilson, mopping his forehead; "I have a small
+pawnbroker's business at Coburg Square, near the City. It's not a
+very large affair, and of late years it has not done more than
+just give me a living. I used to be able to keep two assistants,
+but now I only keep one; and I would have a job to pay him but
+that he is willing to come for half wages so as to learn the
+business."
+
+"What is the name of this obliging youth?" asked Sherlock Holmes.
+
+"His name is Vincent Spaulding, and he's not such a youth,
+either. It's hard to say his age. I should not wish a smarter
+assistant, Mr. Holmes; and I know very well that he could better
+himself and earn twice what I am able to give him. But, after
+all, if he is satisfied, why should I put ideas in his head?"
+
+"Why, indeed? You seem most fortunate in having an employé who
+comes under the full market price. It is not a common experience
+among employers in this age. I don't know that your assistant is
+not as remarkable as your advertisement."
+
+"Oh, he has his faults, too," said Mr. Wilson. "Never was such a
+fellow for photography. Snapping away with a camera when he ought
+to be improving his mind, and then diving down into the cellar
+like a rabbit into its hole to develop his pictures. That is his
+main fault, but on the whole he's a good worker. There's no vice
+in him."
+
+"He is still with you, I presume?"
+
+"Yes, sir. He and a girl of fourteen, who does a bit of simple
+cooking and keeps the place clean--that's all I have in the
+house, for I am a widower and never had any family. We live very
+quietly, sir, the three of us; and we keep a roof over our heads
+and pay our debts, if we do nothing more.
+
+"The first thing that put us out was that advertisement.
+Spaulding, he came down into the office just this day eight
+weeks, with this very paper in his hand, and he says:
+
+"'I wish to the Lord, Mr. Wilson, that I was a red-headed man.'
+
+"'Why that?' I asks.
+
+"'Why,' says he, 'here's another vacancy on the League of the
+Red-headed Men. It's worth quite a little fortune to any man who
+gets it, and I understand that there are more vacancies than
+there are men, so that the trustees are at their wits' end what
+to do with the money. If my hair would only change colour, here's
+a nice little crib all ready for me to step into.'
+
+"'Why, what is it, then?' I asked. You see, Mr. Holmes, I am a
+very stay-at-home man, and as my business came to me instead of
+my having to go to it, I was often weeks on end without putting
+my foot over the door-mat. In that way I didn't know much of what
+was going on outside, and I was always glad of a bit of news.
+
+"'Have you never heard of the League of the Red-headed Men?' he
+asked with his eyes open.
+
+"'Never.'
+
+"'Why, I wonder at that, for you are eligible yourself for one
+of the vacancies.'
+
+"'And what are they worth?' I asked.
+
+"'Oh, merely a couple of hundred a year, but the work is slight,
+and it need not interfere very much with one's other
+occupations.'
+
+"Well, you can easily think that that made me prick up my ears,
+for the business has not been over-good for some years, and an
+extra couple of hundred would have been very handy.
+
+"'Tell me all about it,' said I.
+
+"'Well,' said he, showing me the advertisement, 'you can see for
+yourself that the League has a vacancy, and there is the address
+where you should apply for particulars. As far as I can make out,
+the League was founded by an American millionaire, Ezekiah
+Hopkins, who was very peculiar in his ways. He was himself
+red-headed, and he had a great sympathy for all red-headed men;
+so when he died it was found that he had left his enormous
+fortune in the hands of trustees, with instructions to apply the
+interest to the providing of easy berths to men whose hair is of
+that colour. From all I hear it is splendid pay and very little to
+do.'
+
+"'But,' said I, 'there would be millions of red-headed men who
+would apply.'
+
+"'Not so many as you might think,' he answered. 'You see it is
+really confined to Londoners, and to grown men. This American had
+started from London when he was young, and he wanted to do the
+old town a good turn. Then, again, I have heard it is no use your
+applying if your hair is light red, or dark red, or anything but
+real bright, blazing, fiery red. Now, if you cared to apply, Mr.
+Wilson, you would just walk in; but perhaps it would hardly be
+worth your while to put yourself out of the way for the sake of a
+few hundred pounds.'
+
+"Now, it is a fact, gentlemen, as you may see for yourselves,
+that my hair is of a very full and rich tint, so that it seemed
+to me that if there was to be any competition in the matter I
+stood as good a chance as any man that I had ever met. Vincent
+Spaulding seemed to know so much about it that I thought he might
+prove useful, so I just ordered him to put up the shutters for
+the day and to come right away with me. He was very willing to
+have a holiday, so we shut the business up and started off for
+the address that was given us in the advertisement.
+
+"I never hope to see such a sight as that again, Mr. Holmes. From
+north, south, east, and west every man who had a shade of red in
+his hair had tramped into the city to answer the advertisement.
+Fleet Street was choked with red-headed folk, and Pope's Court
+looked like a coster's orange barrow. I should not have thought
+there were so many in the whole country as were brought together
+by that single advertisement. Every shade of colour they
+were--straw, lemon, orange, brick, Irish-setter, liver, clay;
+but, as Spaulding said, there were not many who had the real
+vivid flame-coloured tint. When I saw how many were waiting, I
+would have given it up in despair; but Spaulding would not hear
+of it. How he did it I could not imagine, but he pushed and
+pulled and butted until he got me through the crowd, and right up
+to the steps which led to the office. There was a double stream
+upon the stair, some going up in hope, and some coming back
+dejected; but we wedged in as well as we could and soon found
+ourselves in the office."
+
+"Your experience has been a most entertaining one," remarked
+Holmes as his client paused and refreshed his memory with a huge
+pinch of snuff. "Pray continue your very interesting statement."
+
+"There was nothing in the office but a couple of wooden chairs
+and a deal table, behind which sat a small man with a head that
+was even redder than mine. He said a few words to each candidate
+as he came up, and then he always managed to find some fault in
+them which would disqualify them. Getting a vacancy did not seem
+to be such a very easy matter, after all. However, when our turn
+came the little man was much more favourable to me than to any of
+the others, and he closed the door as we entered, so that he
+might have a private word with us.
+
+"'This is Mr. Jabez Wilson,' said my assistant, 'and he is
+willing to fill a vacancy in the League.'
+
+"'And he is admirably suited for it,' the other answered. 'He has
+every requirement. I cannot recall when I have seen anything so
+fine.' He took a step backward, cocked his head on one side, and
+gazed at my hair until I felt quite bashful. Then suddenly he
+plunged forward, wrung my hand, and congratulated me warmly on my
+success.
+
+"'It would be injustice to hesitate,' said he. 'You will,
+however, I am sure, excuse me for taking an obvious precaution.'
+With that he seized my hair in both his hands, and tugged until I
+yelled with the pain. 'There is water in your eyes,' said he as
+he released me. 'I perceive that all is as it should be. But we
+have to be careful, for we have twice been deceived by wigs and
+once by paint. I could tell you tales of cobbler's wax which
+would disgust you with human nature.' He stepped over to the
+window and shouted through it at the top of his voice that the
+vacancy was filled. A groan of disappointment came up from below,
+and the folk all trooped away in different directions until there
+was not a red-head to be seen except my own and that of the
+manager.
+
+"'My name,' said he, 'is Mr. Duncan Ross, and I am myself one of
+the pensioners upon the fund left by our noble benefactor. Are
+you a married man, Mr. Wilson? Have you a family?'
+
+"I answered that I had not.
+
+"His face fell immediately.
+
+"'Dear me!' he said gravely, 'that is very serious indeed! I am
+sorry to hear you say that. The fund was, of course, for the
+propagation and spread of the red-heads as well as for their
+maintenance. It is exceedingly unfortunate that you should be a
+bachelor.'
+
+"My face lengthened at this, Mr. Holmes, for I thought that I was
+not to have the vacancy after all; but after thinking it over for
+a few minutes he said that it would be all right.
+
+"'In the case of another,' said he, 'the objection might be
+fatal, but we must stretch a point in favour of a man with such a
+head of hair as yours. When shall you be able to enter upon your
+new duties?'
+
+"'Well, it is a little awkward, for I have a business already,'
+said I.
+
+"'Oh, never mind about that, Mr. Wilson!' said Vincent Spaulding.
+'I should be able to look after that for you.'
+
+"'What would be the hours?' I asked.
+
+"'Ten to two.'
+
+"Now a pawnbroker's business is mostly done of an evening, Mr.
+Holmes, especially Thursday and Friday evening, which is just
+before pay-day; so it would suit me very well to earn a little in
+the mornings. Besides, I knew that my assistant was a good man,
+and that he would see to anything that turned up.
+
+"'That would suit me very well,' said I. 'And the pay?'
+
+"'Is 4 pounds a week.'
+
+"'And the work?'
+
+"'Is purely nominal.'
+
+"'What do you call purely nominal?'
+
+"'Well, you have to be in the office, or at least in the
+building, the whole time. If you leave, you forfeit your whole
+position forever. The will is very clear upon that point. You
+don't comply with the conditions if you budge from the office
+during that time.'
+
+"'It's only four hours a day, and I should not think of leaving,'
+said I.
+
+"'No excuse will avail,' said Mr. Duncan Ross; 'neither sickness
+nor business nor anything else. There you must stay, or you lose
+your billet.'
+
+"'And the work?'
+
+"'Is to copy out the "Encyclopaedia Britannica." There is the first
+volume of it in that press. You must find your own ink, pens, and
+blotting-paper, but we provide this table and chair. Will you be
+ready to-morrow?'
+
+"'Certainly,' I answered.
+
+"'Then, good-bye, Mr. Jabez Wilson, and let me congratulate you
+once more on the important position which you have been fortunate
+enough to gain.' He bowed me out of the room and I went home with
+my assistant, hardly knowing what to say or do, I was so pleased
+at my own good fortune.
+
+"Well, I thought over the matter all day, and by evening I was in
+low spirits again; for I had quite persuaded myself that the
+whole affair must be some great hoax or fraud, though what its
+object might be I could not imagine. It seemed altogether past
+belief that anyone could make such a will, or that they would pay
+such a sum for doing anything so simple as copying out the
+'Encyclopaedia Britannica.' Vincent Spaulding did what he could to
+cheer me up, but by bedtime I had reasoned myself out of the
+whole thing. However, in the morning I determined to have a look
+at it anyhow, so I bought a penny bottle of ink, and with a
+quill-pen, and seven sheets of foolscap paper, I started off for
+Pope's Court.
+
+"Well, to my surprise and delight, everything was as right as
+possible. The table was set out ready for me, and Mr. Duncan Ross
+was there to see that I got fairly to work. He started me off
+upon the letter A, and then he left me; but he would drop in from
+time to time to see that all was right with me. At two o'clock he
+bade me good-day, complimented me upon the amount that I had
+written, and locked the door of the office after me.
+
+"This went on day after day, Mr. Holmes, and on Saturday the
+manager came in and planked down four golden sovereigns for my
+week's work. It was the same next week, and the same the week
+after. Every morning I was there at ten, and every afternoon I
+left at two. By degrees Mr. Duncan Ross took to coming in only
+once of a morning, and then, after a time, he did not come in at
+all. Still, of course, I never dared to leave the room for an
+instant, for I was not sure when he might come, and the billet
+was such a good one, and suited me so well, that I would not risk
+the loss of it.
+
+"Eight weeks passed away like this, and I had written about
+Abbots and Archery and Armour and Architecture and Attica, and
+hoped with diligence that I might get on to the B's before very
+long. It cost me something in foolscap, and I had pretty nearly
+filled a shelf with my writings. And then suddenly the whole
+business came to an end."
+
+"To an end?"
+
+"Yes, sir. And no later than this morning. I went to my work as
+usual at ten o'clock, but the door was shut and locked, with a
+little square of cardboard hammered on to the middle of the
+panel with a tack. Here it is, and you can read for yourself."
+
+He held up a piece of white cardboard about the size of a sheet
+of note-paper. It read in this fashion:
+
+                  THE RED-HEADED LEAGUE
+
+                           IS
+
+                        DISSOLVED.
+
+                     October 9, 1890.
+
+Sherlock Holmes and I surveyed this curt announcement and the
+rueful face behind it, until the comical side of the affair so
+completely overtopped every other consideration that we both
+burst out into a roar of laughter.
+
+"I cannot see that there is anything very funny," cried our
+client, flushing up to the roots of his flaming head. "If you can
+do nothing better than laugh at me, I can go elsewhere."
+
+"No, no," cried Holmes, shoving him back into the chair from
+which he had half risen. "I really wouldn't miss your case for
+the world. It is most refreshingly unusual. But there is, if you
+will excuse my saying so, something just a little funny about it.
+Pray what steps did you take when you found the card upon the
+door?"
+
+"I was staggered, sir. I did not know what to do. Then I called
+at the offices round, but none of them seemed to know anything
+about it. Finally, I went to the landlord, who is an accountant
+living on the ground-floor, and I asked him if he could tell me
+what had become of the Red-headed League. He said that he had
+never heard of any such body. Then I asked him who Mr. Duncan
+Ross was. He answered that the name was new to him.
+
+"'Well,' said I, 'the gentleman at No. 4.'
+
+"'What, the red-headed man?'
+
+"'Yes.'
+
+"'Oh,' said he, 'his name was William Morris. He was a solicitor
+and was using my room as a temporary convenience until his new
+premises were ready. He moved out yesterday.'
+
+"'Where could I find him?'
+
+"'Oh, at his new offices. He did tell me the address. Yes, 17
+King Edward Street, near St. Paul's.'
+
+"I started off, Mr. Holmes, but when I got to that address it was
+a manufactory of artificial knee-caps, and no one in it had ever
+heard of either Mr. William Morris or Mr. Duncan Ross."
+
+"And what did you do then?" asked Holmes.
+
+"I went home to Saxe-Coburg Square, and I took the advice of my
+assistant. But he could not help me in any way. He could only say
+that if I waited I should hear by post. But that was not quite
+good enough, Mr. Holmes. I did not wish to lose such a place
+without a struggle, so, as I had heard that you were good enough
+to give advice to poor folk who were in need of it, I came right
+away to you."
+
+"And you did very wisely," said Holmes. "Your case is an
+exceedingly remarkable one, and I shall be happy to look into it.
+From what you have told me I think that it is possible that
+graver issues hang from it than might at first sight appear."
+
+"Grave enough!" said Mr. Jabez Wilson. "Why, I have lost four
+pound a week."
+
+"As far as you are personally concerned," remarked Holmes, "I do
+not see that you have any grievance against this extraordinary
+league. On the contrary, you are, as I understand, richer by some
+30 pounds, to say nothing of the minute knowledge which you have
+gained on every subject which comes under the letter A. You have
+lost nothing by them."
+
+"No, sir. But I want to find out about them, and who they are,
+and what their object was in playing this prank--if it was a
+prank--upon me. It was a pretty expensive joke for them, for it
+cost them two and thirty pounds."
+
+"We shall endeavour to clear up these points for you. And, first,
+one or two questions, Mr. Wilson. This assistant of yours who
+first called your attention to the advertisement--how long had he
+been with you?"
+
+"About a month then."
+
+"How did he come?"
+
+"In answer to an advertisement."
+
+"Was he the only applicant?"
+
+"No, I had a dozen."
+
+"Why did you pick him?"
+
+"Because he was handy and would come cheap."
+
+"At half-wages, in fact."
+
+"Yes."
+
+"What is he like, this Vincent Spaulding?"
+
+"Small, stout-built, very quick in his ways, no hair on his face,
+though he's not short of thirty. Has a white splash of acid upon
+his forehead."
+
+Holmes sat up in his chair in considerable excitement. "I thought
+as much," said he. "Have you ever observed that his ears are
+pierced for earrings?"
+
+"Yes, sir. He told me that a gipsy had done it for him when he
+was a lad."
+
+"Hum!" said Holmes, sinking back in deep thought. "He is still
+with you?"
+
+"Oh, yes, sir; I have only just left him."
+
+"And has your business been attended to in your absence?"
+
+"Nothing to complain of, sir. There's never very much to do of a
+morning."
+
+"That will do, Mr. Wilson. I shall be happy to give you an
+opinion upon the subject in the course of a day or two. To-day is
+Saturday, and I hope that by Monday we may come to a conclusion."
+
+"Well, Watson," said Holmes when our visitor had left us, "what
+do you make of it all?"
+
+"I make nothing of it," I answered frankly. "It is a most
+mysterious business."
+
+"As a rule," said Holmes, "the more bizarre a thing is the less
+mysterious it proves to be. It is your commonplace, featureless
+crimes which are really puzzling, just as a commonplace face is
+the most difficult to identify. But I must be prompt over this
+matter."
+
+"What are you going to do, then?" I asked.
+
+"To smoke," he answered. "It is quite a three pipe problem, and I
+beg that you won't speak to me for fifty minutes." He curled
+himself up in his chair, with his thin knees drawn up to his
+hawk-like nose, and there he sat with his eyes closed and his
+black clay pipe thrusting out like the bill of some strange bird.
+I had come to the conclusion that he had dropped asleep, and
+indeed was nodding myself, when he suddenly sprang out of his
+chair with the gesture of a man who has made up his mind and put
+his pipe down upon the mantelpiece.
+
+"Sarasate plays at the St. James's Hall this afternoon," he
+remarked. "What do you think, Watson? Could your patients spare
+you for a few hours?"
+
+"I have nothing to do to-day. My practice is never very
+absorbing."
+
+"Then put on your hat and come. I am going through the City
+first, and we can have some lunch on the way. I observe that
+there is a good deal of German music on the programme, which is
+rather more to my taste than Italian or French. It is
+introspective, and I want to introspect. Come along!"
+
+We travelled by the Underground as far as Aldersgate; and a short
+walk took us to Saxe-Coburg Square, the scene of the singular
+story which we had listened to in the morning. It was a poky,
+little, shabby-genteel place, where four lines of dingy
+two-storied brick houses looked out into a small railed-in
+enclosure, where a lawn of weedy grass and a few clumps of faded
+laurel-bushes made a hard fight against a smoke-laden and
+uncongenial atmosphere. Three gilt balls and a brown board with
+"JABEZ WILSON" in white letters, upon a corner house, announced
+the place where our red-headed client carried on his business.
+Sherlock Holmes stopped in front of it with his head on one side
+and looked it all over, with his eyes shining brightly between
+puckered lids. Then he walked slowly up the street, and then down
+again to the corner, still looking keenly at the houses. Finally
+he returned to the pawnbroker's, and, having thumped vigorously
+upon the pavement with his stick two or three times, he went up
+to the door and knocked. It was instantly opened by a
+bright-looking, clean-shaven young fellow, who asked him to step
+in.
+
+"Thank you," said Holmes, "I only wished to ask you how you would
+go from here to the Strand."
+
+"Third right, fourth left," answered the assistant promptly,
+closing the door.
+
+"Smart fellow, that," observed Holmes as we walked away. "He is,
+in my judgment, the fourth smartest man in London, and for daring
+I am not sure that he has not a claim to be third. I have known
+something of him before."
+
+"Evidently," said I, "Mr. Wilson's assistant counts for a good
+deal in this mystery of the Red-headed League. I am sure that you
+inquired your way merely in order that you might see him."
+
+"Not him."
+
+"What then?"
+
+"The knees of his trousers."
+
+"And what did you see?"
+
+"What I expected to see."
+
+"Why did you beat the pavement?"
+
+"My dear doctor, this is a time for observation, not for talk. We
+are spies in an enemy's country. We know something of Saxe-Coburg
+Square. Let us now explore the parts which lie behind it."
+
+The road in which we found ourselves as we turned round the
+corner from the retired Saxe-Coburg Square presented as great a
+contrast to it as the front of a picture does to the back. It was
+one of the main arteries which conveyed the traffic of the City
+to the north and west. The roadway was blocked with the immense
+stream of commerce flowing in a double tide inward and outward,
+while the footpaths were black with the hurrying swarm of
+pedestrians. It was difficult to realise as we looked at the line
+of fine shops and stately business premises that they really
+abutted on the other side upon the faded and stagnant square
+which we had just quitted.
+
+"Let me see," said Holmes, standing at the corner and glancing
+along the line, "I should like just to remember the order of the
+houses here. It is a hobby of mine to have an exact knowledge of
+London. There is Mortimer's, the tobacconist, the little
+newspaper shop, the Coburg branch of the City and Suburban Bank,
+the Vegetarian Restaurant, and McFarlane's carriage-building
+depot. That carries us right on to the other block. And now,
+Doctor, we've done our work, so it's time we had some play. A
+sandwich and a cup of coffee, and then off to violin-land, where
+all is sweetness and delicacy and harmony, and there are no
+red-headed clients to vex us with their conundrums."
+
+My friend was an enthusiastic musician, being himself not only a
+very capable performer but a composer of no ordinary merit. All
+the afternoon he sat in the stalls wrapped in the most perfect
+happiness, gently waving his long, thin fingers in time to the
+music, while his gently smiling face and his languid, dreamy eyes
+were as unlike those of Holmes the sleuth-hound, Holmes the
+relentless, keen-witted, ready-handed criminal agent, as it was
+possible to conceive. In his singular character the dual nature
+alternately asserted itself, and his extreme exactness and
+astuteness represented, as I have often thought, the reaction
+against the poetic and contemplative mood which occasionally
+predominated in him. The swing of his nature took him from
+extreme languor to devouring energy; and, as I knew well, he was
+never so truly formidable as when, for days on end, he had been
+lounging in his armchair amid his improvisations and his
+black-letter editions. Then it was that the lust of the chase
+would suddenly come upon him, and that his brilliant reasoning
+power would rise to the level of intuition, until those who were
+unacquainted with his methods would look askance at him as on a
+man whose knowledge was not that of other mortals. When I saw him
+that afternoon so enwrapped in the music at St. James's Hall I
+felt that an evil time might be coming upon those whom he had set
+himself to hunt down.
+
+"You want to go home, no doubt, Doctor," he remarked as we
+emerged.
+
+"Yes, it would be as well."
+
+"And I have some business to do which will take some hours. This
+business at Coburg Square is serious."
+
+"Why serious?"
+
+"A considerable crime is in contemplation. I have every reason to
+believe that we shall be in time to stop it. But to-day being
+Saturday rather complicates matters. I shall want your help
+to-night."
+
+"At what time?"
+
+"Ten will be early enough."
+
+"I shall be at Baker Street at ten."
+
+"Very well. And, I say, Doctor, there may be some little danger,
+so kindly put your army revolver in your pocket." He waved his
+hand, turned on his heel, and disappeared in an instant among the
+crowd.
+
+I trust that I am not more dense than my neighbours, but I was
+always oppressed with a sense of my own stupidity in my dealings
+with Sherlock Holmes. Here I had heard what he had heard, I had
+seen what he had seen, and yet from his words it was evident that
+he saw clearly not only what had happened but what was about to
+happen, while to me the whole business was still confused and
+grotesque. As I drove home to my house in Kensington I thought
+over it all, from the extraordinary story of the red-headed
+copier of the "Encyclopaedia" down to the visit to Saxe-Coburg
+Square, and the ominous words with which he had parted from me.
+What was this nocturnal expedition, and why should I go armed?
+Where were we going, and what were we to do? I had the hint from
+Holmes that this smooth-faced pawnbroker's assistant was a
+formidable man--a man who might play a deep game. I tried to
+puzzle it out, but gave it up in despair and set the matter aside
+until night should bring an explanation.
+
+It was a quarter-past nine when I started from home and made my
+way across the Park, and so through Oxford Street to Baker
+Street. Two hansoms were standing at the door, and as I entered
+the passage I heard the sound of voices from above. On entering
+his room I found Holmes in animated conversation with two men,
+one of whom I recognised as Peter Jones, the official police
+agent, while the other was a long, thin, sad-faced man, with a
+very shiny hat and oppressively respectable frock-coat.
+
+"Ha! Our party is complete," said Holmes, buttoning up his
+pea-jacket and taking his heavy hunting crop from the rack.
+"Watson, I think you know Mr. Jones, of Scotland Yard? Let me
+introduce you to Mr. Merryweather, who is to be our companion in
+to-night's adventure."
+
+"We're hunting in couples again, Doctor, you see," said Jones in
+his consequential way. "Our friend here is a wonderful man for
+starting a chase. All he wants is an old dog to help him to do
+the running down."
+
+"I hope a wild goose may not prove to be the end of our chase,"
+observed Mr. Merryweather gloomily.
+
+"You may place considerable confidence in Mr. Holmes, sir," said
+the police agent loftily. "He has his own little methods, which
+are, if he won't mind my saying so, just a little too theoretical
+and fantastic, but he has the makings of a detective in him. It
+is not too much to say that once or twice, as in that business of
+the Sholto murder and the Agra treasure, he has been more nearly
+correct than the official force."
+
+"Oh, if you say so, Mr. Jones, it is all right," said the
+stranger with deference. "Still, I confess that I miss my rubber.
+It is the first Saturday night for seven-and-twenty years that I
+have not had my rubber."
+
+"I think you will find," said Sherlock Holmes, "that you will
+play for a higher stake to-night than you have ever done yet, and
+that the play will be more exciting. For you, Mr. Merryweather,
+the stake will be some 30,000 pounds; and for you, Jones, it will
+be the man upon whom you wish to lay your hands."
+
+"John Clay, the murderer, thief, smasher, and forger. He's a
+young man, Mr. Merryweather, but he is at the head of his
+profession, and I would rather have my bracelets on him than on
+any criminal in London. He's a remarkable man, is young John
+Clay. His grandfather was a royal duke, and he himself has been
+to Eton and Oxford. His brain is as cunning as his fingers, and
+though we meet signs of him at every turn, we never know where to
+find the man himself. He'll crack a crib in Scotland one week,
+and be raising money to build an orphanage in Cornwall the next.
+I've been on his track for years and have never set eyes on him
+yet."
+
+"I hope that I may have the pleasure of introducing you to-night.
+I've had one or two little turns also with Mr. John Clay, and I
+agree with you that he is at the head of his profession. It is
+past ten, however, and quite time that we started. If you two
+will take the first hansom, Watson and I will follow in the
+second."
+
+Sherlock Holmes was not very communicative during the long drive
+and lay back in the cab humming the tunes which he had heard in
+the afternoon. We rattled through an endless labyrinth of gas-lit
+streets until we emerged into Farrington Street.
+
+"We are close there now," my friend remarked. "This fellow
+Merryweather is a bank director, and personally interested in the
+matter. I thought it as well to have Jones with us also. He is
+not a bad fellow, though an absolute imbecile in his profession.
+He has one positive virtue. He is as brave as a bulldog and as
+tenacious as a lobster if he gets his claws upon anyone. Here we
+are, and they are waiting for us."
+
+We had reached the same crowded thoroughfare in which we had
+found ourselves in the morning. Our cabs were dismissed, and,
+following the guidance of Mr. Merryweather, we passed down a
+narrow passage and through a side door, which he opened for us.
+Within there was a small corridor, which ended in a very massive
+iron gate. This also was opened, and led down a flight of winding
+stone steps, which terminated at another formidable gate. Mr.
+Merryweather stopped to light a lantern, and then conducted us
+down a dark, earth-smelling passage, and so, after opening a
+third door, into a huge vault or cellar, which was piled all
+round with crates and massive boxes.
+
+"You are not very vulnerable from above," Holmes remarked as he
+held up the lantern and gazed about him.
+
+"Nor from below," said Mr. Merryweather, striking his stick upon
+the flags which lined the floor. "Why, dear me, it sounds quite
+hollow!" he remarked, looking up in surprise.
+
+"I must really ask you to be a little more quiet!" said Holmes
+severely. "You have already imperilled the whole success of our
+expedition. Might I beg that you would have the goodness to sit
+down upon one of those boxes, and not to interfere?"
+
+The solemn Mr. Merryweather perched himself upon a crate, with a
+very injured expression upon his face, while Holmes fell upon his
+knees upon the floor and, with the lantern and a magnifying lens,
+began to examine minutely the cracks between the stones. A few
+seconds sufficed to satisfy him, for he sprang to his feet again
+and put his glass in his pocket.
+
+"We have at least an hour before us," he remarked, "for they can
+hardly take any steps until the good pawnbroker is safely in bed.
+Then they will not lose a minute, for the sooner they do their
+work the longer time they will have for their escape. We are at
+present, Doctor--as no doubt you have divined--in the cellar of
+the City branch of one of the principal London banks. Mr.
+Merryweather is the chairman of directors, and he will explain to
+you that there are reasons why the more daring criminals of
+London should take a considerable interest in this cellar at
+present."
+
+"It is our French gold," whispered the director. "We have had
+several warnings that an attempt might be made upon it."
+
+"Your French gold?"
+
+"Yes. We had occasion some months ago to strengthen our resources
+and borrowed for that purpose 30,000 napoleons from the Bank of
+France. It has become known that we have never had occasion to
+unpack the money, and that it is still lying in our cellar. The
+crate upon which I sit contains 2,000 napoleons packed between
+layers of lead foil. Our reserve of bullion is much larger at
+present than is usually kept in a single branch office, and the
+directors have had misgivings upon the subject."
+
+"Which were very well justified," observed Holmes. "And now it is
+time that we arranged our little plans. I expect that within an
+hour matters will come to a head. In the meantime Mr.
+Merryweather, we must put the screen over that dark lantern."
+
+"And sit in the dark?"
+
+"I am afraid so. I had brought a pack of cards in my pocket, and
+I thought that, as we were a partie carrée, you might have your
+rubber after all. But I see that the enemy's preparations have
+gone so far that we cannot risk the presence of a light. And,
+first of all, we must choose our positions. These are daring men,
+and though we shall take them at a disadvantage, they may do us
+some harm unless we are careful. I shall stand behind this crate,
+and do you conceal yourselves behind those. Then, when I flash a
+light upon them, close in swiftly. If they fire, Watson, have no
+compunction about shooting them down."
+
+I placed my revolver, cocked, upon the top of the wooden case
+behind which I crouched. Holmes shot the slide across the front
+of his lantern and left us in pitch darkness--such an absolute
+darkness as I have never before experienced. The smell of hot
+metal remained to assure us that the light was still there, ready
+to flash out at a moment's notice. To me, with my nerves worked
+up to a pitch of expectancy, there was something depressing and
+subduing in the sudden gloom, and in the cold dank air of the
+vault.
+
+"They have but one retreat," whispered Holmes. "That is back
+through the house into Saxe-Coburg Square. I hope that you have
+done what I asked you, Jones?"
+
+"I have an inspector and two officers waiting at the front door."
+
+"Then we have stopped all the holes. And now we must be silent
+and wait."
+
+What a time it seemed! From comparing notes afterwards it was but
+an hour and a quarter, yet it appeared to me that the night must
+have almost gone and the dawn be breaking above us. My limbs
+were weary and stiff, for I feared to change my position; yet my
+nerves were worked up to the highest pitch of tension, and my
+hearing was so acute that I could not only hear the gentle
+breathing of my companions, but I could distinguish the deeper,
+heavier in-breath of the bulky Jones from the thin, sighing note
+of the bank director. From my position I could look over the case
+in the direction of the floor. Suddenly my eyes caught the glint
+of a light.
+
+At first it was but a lurid spark upon the stone pavement. Then
+it lengthened out until it became a yellow line, and then,
+without any warning or sound, a gash seemed to open and a hand
+appeared, a white, almost womanly hand, which felt about in the
+centre of the little area of light. For a minute or more the
+hand, with its writhing fingers, protruded out of the floor. Then
+it was withdrawn as suddenly as it appeared, and all was dark
+again save the single lurid spark which marked a chink between
+the stones.
+
+Its disappearance, however, was but momentary. With a rending,
+tearing sound, one of the broad, white stones turned over upon
+its side and left a square, gaping hole, through which streamed
+the light of a lantern. Over the edge there peeped a clean-cut,
+boyish face, which looked keenly about it, and then, with a hand
+on either side of the aperture, drew itself shoulder-high and
+waist-high, until one knee rested upon the edge. In another
+instant he stood at the side of the hole and was hauling after
+him a companion, lithe and small like himself, with a pale face
+and a shock of very red hair.
+
+"It's all clear," he whispered. "Have you the chisel and the
+bags? Great Scott! Jump, Archie, jump, and I'll swing for it!"
+
+Sherlock Holmes had sprung out and seized the intruder by the
+collar. The other dived down the hole, and I heard the sound of
+rending cloth as Jones clutched at his skirts. The light flashed
+upon the barrel of a revolver, but Holmes' hunting crop came
+down on the man's wrist, and the pistol clinked upon the stone
+floor.
+
+"It's no use, John Clay," said Holmes blandly. "You have no
+chance at all."
+
+"So I see," the other answered with the utmost coolness. "I fancy
+that my pal is all right, though I see you have got his
+coat-tails."
+
+"There are three men waiting for him at the door," said Holmes.
+
+"Oh, indeed! You seem to have done the thing very completely. I
+must compliment you."
+
+"And I you," Holmes answered. "Your red-headed idea was very new
+and effective."
+
+"You'll see your pal again presently," said Jones. "He's quicker
+at climbing down holes than I am. Just hold out while I fix the
+derbies."
+
+"I beg that you will not touch me with your filthy hands,"
+remarked our prisoner as the handcuffs clattered upon his wrists.
+"You may not be aware that I have royal blood in my veins. Have
+the goodness, also, when you address me always to say 'sir' and
+'please.'"
+
+"All right," said Jones with a stare and a snigger. "Well, would
+you please, sir, march upstairs, where we can get a cab to carry
+your Highness to the police-station?"
+
+"That is better," said John Clay serenely. He made a sweeping bow
+to the three of us and walked quietly off in the custody of the
+detective.
+
+"Really, Mr. Holmes," said Mr. Merryweather as we followed them
+from the cellar, "I do not know how the bank can thank you or
+repay you. There is no doubt that you have detected and defeated
+in the most complete manner one of the most determined attempts
+at bank robbery that have ever come within my experience."
+
+"I have had one or two little scores of my own to settle with Mr.
+John Clay," said Holmes. "I have been at some small expense over
+this matter, which I shall expect the bank to refund, but beyond
+that I am amply repaid by having had an experience which is in
+many ways unique, and by hearing the very remarkable narrative of
+the Red-headed League."
+
+
+"You see, Watson," he explained in the early hours of the morning
+as we sat over a glass of whisky and soda in Baker Street, "it
+was perfectly obvious from the first that the only possible
+object of this rather fantastic business of the advertisement of
+the League, and the copying of the 'Encyclopaedia,' must be to get
+this not over-bright pawnbroker out of the way for a number of
+hours every day. It was a curious way of managing it, but,
+really, it would be difficult to suggest a better. The method was
+no doubt suggested to Clay's ingenious mind by the colour of his
+accomplice's hair. The 4 pounds a week was a lure which must draw
+him, and what was it to them, who were playing for thousands?
+They put in the advertisement, one rogue has the temporary
+office, the other rogue incites the man to apply for it, and
+together they manage to secure his absence every morning in the
+week. From the time that I heard of the assistant having come for
+half wages, it was obvious to me that he had some strong motive
+for securing the situation."
+
+"But how could you guess what the motive was?"
+
+"Had there been women in the house, I should have suspected a
+mere vulgar intrigue. That, however, was out of the question. The
+man's business was a small one, and there was nothing in his
+house which could account for such elaborate preparations, and
+such an expenditure as they were at. It must, then, be something
+out of the house. What could it be? I thought of the assistant's
+fondness for photography, and his trick of vanishing into the
+cellar. The cellar! There was the end of this tangled clue. Then
+I made inquiries as to this mysterious assistant and found that I
+had to deal with one of the coolest and most daring criminals in
+London. He was doing something in the cellar--something which
+took many hours a day for months on end. What could it be, once
+more? I could think of nothing save that he was running a tunnel
+to some other building.
+
+"So far I had got when we went to visit the scene of action. I
+surprised you by beating upon the pavement with my stick. I was
+ascertaining whether the cellar stretched out in front or behind.
+It was not in front. Then I rang the bell, and, as I hoped, the
+assistant answered it. We have had some skirmishes, but we had
+never set eyes upon each other before. I hardly looked at his
+face. His knees were what I wished to see. You must yourself have
+remarked how worn, wrinkled, and stained they were. They spoke of
+those hours of burrowing. The only remaining point was what they
+were burrowing for. I walked round the corner, saw the City and
+Suburban Bank abutted on our friend's premises, and felt that I
+had solved my problem. When you drove home after the concert I
+called upon Scotland Yard and upon the chairman of the bank
+directors, with the result that you have seen."
+
+"And how could you tell that they would make their attempt
+to-night?" I asked.
+
+"Well, when they closed their League offices that was a sign that
+they cared no longer about Mr. Jabez Wilson's presence--in other
+words, that they had completed their tunnel. But it was essential
+that they should use it soon, as it might be discovered, or the
+bullion might be removed. Saturday would suit them better than
+any other day, as it would give them two days for their escape.
+For all these reasons I expected them to come to-night."
+
+"You reasoned it out beautifully," I exclaimed in unfeigned
+admiration. "It is so long a chain, and yet every link rings
+true."
+
+"It saved me from ennui," he answered, yawning. "Alas! I already
+feel it closing in upon me. My life is spent in one long effort
+to escape from the commonplaces of existence. These little
+problems help me to do so."
+
+"And you are a benefactor of the race," said I.
+
+He shrugged his shoulders. "Well, perhaps, after all, it is of
+some little use," he remarked. "'L'homme c'est rien--l'oeuvre
+c'est tout,' as Gustave Flaubert wrote to George Sand."
+
+
+
+ADVENTURE III. A CASE OF IDENTITY
+
+"My dear fellow," said Sherlock Holmes as we sat on either side
+of the fire in his lodgings at Baker Street, "life is infinitely
+stranger than anything which the mind of man could invent. We
+would not dare to conceive the things which are really mere
+commonplaces of existence. If we could fly out of that window
+hand in hand, hover over this great city, gently remove the
+roofs, and peep in at the queer things which are going on, the
+strange coincidences, the plannings, the cross-purposes, the
+wonderful chains of events, working through generations, and
+leading to the most outré results, it would make all fiction with
+its conventionalities and foreseen conclusions most stale and
+unprofitable."
+
+"And yet I am not convinced of it," I answered. "The cases which
+come to light in the papers are, as a rule, bald enough, and
+vulgar enough. We have in our police reports realism pushed to
+its extreme limits, and yet the result is, it must be confessed,
+neither fascinating nor artistic."
+
+"A certain selection and discretion must be used in producing a
+realistic effect," remarked Holmes. "This is wanting in the
+police report, where more stress is laid, perhaps, upon the
+platitudes of the magistrate than upon the details, which to an
+observer contain the vital essence of the whole matter. Depend
+upon it, there is nothing so unnatural as the commonplace."
+
+I smiled and shook my head. "I can quite understand your thinking
+so," I said. "Of course, in your position of unofficial adviser
+and helper to everybody who is absolutely puzzled, throughout
+three continents, you are brought in contact with all that is
+strange and bizarre. But here"--I picked up the morning paper
+from the ground--"let us put it to a practical test. Here is the
+first heading upon which I come. 'A husband's cruelty to his
+wife.' There is half a column of print, but I know without
+reading it that it is all perfectly familiar to me. There is, of
+course, the other woman, the drink, the push, the blow, the
+bruise, the sympathetic sister or landlady. The crudest of
+writers could invent nothing more crude."
+
+"Indeed, your example is an unfortunate one for your argument,"
+said Holmes, taking the paper and glancing his eye down it. "This
+is the Dundas separation case, and, as it happens, I was engaged
+in clearing up some small points in connection with it. The
+husband was a teetotaler, there was no other woman, and the
+conduct complained of was that he had drifted into the habit of
+winding up every meal by taking out his false teeth and hurling
+them at his wife, which, you will allow, is not an action likely
+to occur to the imagination of the average story-teller. Take a
+pinch of snuff, Doctor, and acknowledge that I have scored over
+you in your example."
+
+He held out his snuffbox of old gold, with a great amethyst in
+the centre of the lid. Its splendour was in such contrast to his
+homely ways and simple life that I could not help commenting upon
+it.
+
+"Ah," said he, "I forgot that I had not seen you for some weeks.
+It is a little souvenir from the King of Bohemia in return for my
+assistance in the case of the Irene Adler papers."
+
+"And the ring?" I asked, glancing at a remarkable brilliant which
+sparkled upon his finger.
+
+"It was from the reigning family of Holland, though the matter in
+which I served them was of such delicacy that I cannot confide it
+even to you, who have been good enough to chronicle one or two of
+my little problems."
+
+"And have you any on hand just now?" I asked with interest.
+
+"Some ten or twelve, but none which present any feature of
+interest. They are important, you understand, without being
+interesting. Indeed, I have found that it is usually in
+unimportant matters that there is a field for the observation,
+and for the quick analysis of cause and effect which gives the
+charm to an investigation. The larger crimes are apt to be the
+simpler, for the bigger the crime the more obvious, as a rule, is
+the motive. In these cases, save for one rather intricate matter
+which has been referred to me from Marseilles, there is nothing
+which presents any features of interest. It is possible, however,
+that I may have something better before very many minutes are
+over, for this is one of my clients, or I am much mistaken."
+
+He had risen from his chair and was standing between the parted
+blinds gazing down into the dull neutral-tinted London street.
+Looking over his shoulder, I saw that on the pavement opposite
+there stood a large woman with a heavy fur boa round her neck,
+and a large curling red feather in a broad-brimmed hat which was
+tilted in a coquettish Duchess of Devonshire fashion over her
+ear. From under this great panoply she peeped up in a nervous,
+hesitating fashion at our windows, while her body oscillated
+backward and forward, and her fingers fidgeted with her glove
+buttons. Suddenly, with a plunge, as of the swimmer who leaves
+the bank, she hurried across the road, and we heard the sharp
+clang of the bell.
+
+"I have seen those symptoms before," said Holmes, throwing his
+cigarette into the fire. "Oscillation upon the pavement always
+means an affaire de coeur. She would like advice, but is not sure
+that the matter is not too delicate for communication. And yet
+even here we may discriminate. When a woman has been seriously
+wronged by a man she no longer oscillates, and the usual symptom
+is a broken bell wire. Here we may take it that there is a love
+matter, but that the maiden is not so much angry as perplexed, or
+grieved. But here she comes in person to resolve our doubts."
+
+As he spoke there was a tap at the door, and the boy in buttons
+entered to announce Miss Mary Sutherland, while the lady herself
+loomed behind his small black figure like a full-sailed
+merchant-man behind a tiny pilot boat. Sherlock Holmes welcomed
+her with the easy courtesy for which he was remarkable, and,
+having closed the door and bowed her into an armchair, he looked
+her over in the minute and yet abstracted fashion which was
+peculiar to him.
+
+"Do you not find," he said, "that with your short sight it is a
+little trying to do so much typewriting?"
+
+"I did at first," she answered, "but now I know where the letters
+are without looking." Then, suddenly realising the full purport
+of his words, she gave a violent start and looked up, with fear
+and astonishment upon her broad, good-humoured face. "You've
+heard about me, Mr. Holmes," she cried, "else how could you know
+all that?"
+
+"Never mind," said Holmes, laughing; "it is my business to know
+things. Perhaps I have trained myself to see what others
+overlook. If not, why should you come to consult me?"
+
+"I came to you, sir, because I heard of you from Mrs. Etherege,
+whose husband you found so easy when the police and everyone had
+given him up for dead. Oh, Mr. Holmes, I wish you would do as
+much for me. I'm not rich, but still I have a hundred a year in
+my own right, besides the little that I make by the machine, and
+I would give it all to know what has become of Mr. Hosmer Angel."
+
+"Why did you come away to consult me in such a hurry?" asked
+Sherlock Holmes, with his finger-tips together and his eyes to
+the ceiling.
+
+Again a startled look came over the somewhat vacuous face of Miss
+Mary Sutherland. "Yes, I did bang out of the house," she said,
+"for it made me angry to see the easy way in which Mr.
+Windibank--that is, my father--took it all. He would not go to
+the police, and he would not go to you, and so at last, as he
+would do nothing and kept on saying that there was no harm done,
+it made me mad, and I just on with my things and came right away
+to you."
+
+"Your father," said Holmes, "your stepfather, surely, since the
+name is different."
+
+"Yes, my stepfather. I call him father, though it sounds funny,
+too, for he is only five years and two months older than myself."
+
+"And your mother is alive?"
+
+"Oh, yes, mother is alive and well. I wasn't best pleased, Mr.
+Holmes, when she married again so soon after father's death, and
+a man who was nearly fifteen years younger than herself. Father
+was a plumber in the Tottenham Court Road, and he left a tidy
+business behind him, which mother carried on with Mr. Hardy, the
+foreman; but when Mr. Windibank came he made her sell the
+business, for he was very superior, being a traveller in wines.
+They got 4700 pounds for the goodwill and interest, which wasn't
+near as much as father could have got if he had been alive."
+
+I had expected to see Sherlock Holmes impatient under this
+rambling and inconsequential narrative, but, on the contrary, he
+had listened with the greatest concentration of attention.
+
+"Your own little income," he asked, "does it come out of the
+business?"
+
+"Oh, no, sir. It is quite separate and was left me by my uncle
+Ned in Auckland. It is in New Zealand stock, paying 4 1/2 per
+cent. Two thousand five hundred pounds was the amount, but I can
+only touch the interest."
+
+"You interest me extremely," said Holmes. "And since you draw so
+large a sum as a hundred a year, with what you earn into the
+bargain, you no doubt travel a little and indulge yourself in
+every way. I believe that a single lady can get on very nicely
+upon an income of about 60 pounds."
+
+"I could do with much less than that, Mr. Holmes, but you
+understand that as long as I live at home I don't wish to be a
+burden to them, and so they have the use of the money just while
+I am staying with them. Of course, that is only just for the
+time. Mr. Windibank draws my interest every quarter and pays it
+over to mother, and I find that I can do pretty well with what I
+earn at typewriting. It brings me twopence a sheet, and I can
+often do from fifteen to twenty sheets in a day."
+
+"You have made your position very clear to me," said Holmes.
+"This is my friend, Dr. Watson, before whom you can speak as
+freely as before myself. Kindly tell us now all about your
+connection with Mr. Hosmer Angel."
+
+A flush stole over Miss Sutherland's face, and she picked
+nervously at the fringe of her jacket. "I met him first at the
+gasfitters' ball," she said. "They used to send father tickets
+when he was alive, and then afterwards they remembered us, and
+sent them to mother. Mr. Windibank did not wish us to go. He
+never did wish us to go anywhere. He would get quite mad if I
+wanted so much as to join a Sunday-school treat. But this time I
+was set on going, and I would go; for what right had he to
+prevent? He said the folk were not fit for us to know, when all
+father's friends were to be there. And he said that I had nothing
+fit to wear, when I had my purple plush that I had never so much
+as taken out of the drawer. At last, when nothing else would do,
+he went off to France upon the business of the firm, but we went,
+mother and I, with Mr. Hardy, who used to be our foreman, and it
+was there I met Mr. Hosmer Angel."
+
+"I suppose," said Holmes, "that when Mr. Windibank came back from
+France he was very annoyed at your having gone to the ball."
+
+"Oh, well, he was very good about it. He laughed, I remember, and
+shrugged his shoulders, and said there was no use denying
+anything to a woman, for she would have her way."
+
+"I see. Then at the gasfitters' ball you met, as I understand, a
+gentleman called Mr. Hosmer Angel."
+
+"Yes, sir. I met him that night, and he called next day to ask if
+we had got home all safe, and after that we met him--that is to
+say, Mr. Holmes, I met him twice for walks, but after that father
+came back again, and Mr. Hosmer Angel could not come to the house
+any more."
+
+"No?"
+
+"Well, you know father didn't like anything of the sort. He
+wouldn't have any visitors if he could help it, and he used to
+say that a woman should be happy in her own family circle. But
+then, as I used to say to mother, a woman wants her own circle to
+begin with, and I had not got mine yet."
+
+"But how about Mr. Hosmer Angel? Did he make no attempt to see
+you?"
+
+"Well, father was going off to France again in a week, and Hosmer
+wrote and said that it would be safer and better not to see each
+other until he had gone. We could write in the meantime, and he
+used to write every day. I took the letters in in the morning, so
+there was no need for father to know."
+
+"Were you engaged to the gentleman at this time?"
+
+"Oh, yes, Mr. Holmes. We were engaged after the first walk that
+we took. Hosmer--Mr. Angel--was a cashier in an office in
+Leadenhall Street--and--"
+
+"What office?"
+
+"That's the worst of it, Mr. Holmes, I don't know."
+
+"Where did he live, then?"
+
+"He slept on the premises."
+
+"And you don't know his address?"
+
+"No--except that it was Leadenhall Street."
+
+"Where did you address your letters, then?"
+
+"To the Leadenhall Street Post Office, to be left till called
+for. He said that if they were sent to the office he would be
+chaffed by all the other clerks about having letters from a lady,
+so I offered to typewrite them, like he did his, but he wouldn't
+have that, for he said that when I wrote them they seemed to come
+from me, but when they were typewritten he always felt that the
+machine had come between us. That will just show you how fond he
+was of me, Mr. Holmes, and the little things that he would think
+of."
+
+"It was most suggestive," said Holmes. "It has long been an axiom
+of mine that the little things are infinitely the most important.
+Can you remember any other little things about Mr. Hosmer Angel?"
+
+"He was a very shy man, Mr. Holmes. He would rather walk with me
+in the evening than in the daylight, for he said that he hated to
+be conspicuous. Very retiring and gentlemanly he was. Even his
+voice was gentle. He'd had the quinsy and swollen glands when he
+was young, he told me, and it had left him with a weak throat,
+and a hesitating, whispering fashion of speech. He was always
+well dressed, very neat and plain, but his eyes were weak, just
+as mine are, and he wore tinted glasses against the glare."
+
+"Well, and what happened when Mr. Windibank, your stepfather,
+returned to France?"
+
+"Mr. Hosmer Angel came to the house again and proposed that we
+should marry before father came back. He was in dreadful earnest
+and made me swear, with my hands on the Testament, that whatever
+happened I would always be true to him. Mother said he was quite
+right to make me swear, and that it was a sign of his passion.
+Mother was all in his favour from the first and was even fonder
+of him than I was. Then, when they talked of marrying within the
+week, I began to ask about father; but they both said never to
+mind about father, but just to tell him afterwards, and mother
+said she would make it all right with him. I didn't quite like
+that, Mr. Holmes. It seemed funny that I should ask his leave, as
+he was only a few years older than me; but I didn't want to do
+anything on the sly, so I wrote to father at Bordeaux, where the
+company has its French offices, but the letter came back to me on
+the very morning of the wedding."
+
+"It missed him, then?"
+
+"Yes, sir; for he had started to England just before it arrived."
+
+"Ha! that was unfortunate. Your wedding was arranged, then, for
+the Friday. Was it to be in church?"
+
+"Yes, sir, but very quietly. It was to be at St. Saviour's, near
+King's Cross, and we were to have breakfast afterwards at the St.
+Pancras Hotel. Hosmer came for us in a hansom, but as there were
+two of us he put us both into it and stepped himself into a
+four-wheeler, which happened to be the only other cab in the
+street. We got to the church first, and when the four-wheeler
+drove up we waited for him to step out, but he never did, and
+when the cabman got down from the box and looked there was no one
+there! The cabman said that he could not imagine what had become
+of him, for he had seen him get in with his own eyes. That was
+last Friday, Mr. Holmes, and I have never seen or heard anything
+since then to throw any light upon what became of him."
+
+"It seems to me that you have been very shamefully treated," said
+Holmes.
+
+"Oh, no, sir! He was too good and kind to leave me so. Why, all
+the morning he was saying to me that, whatever happened, I was to
+be true; and that even if something quite unforeseen occurred to
+separate us, I was always to remember that I was pledged to him,
+and that he would claim his pledge sooner or later. It seemed
+strange talk for a wedding-morning, but what has happened since
+gives a meaning to it."
+
+"Most certainly it does. Your own opinion is, then, that some
+unforeseen catastrophe has occurred to him?"
+
+"Yes, sir. I believe that he foresaw some danger, or else he
+would not have talked so. And then I think that what he foresaw
+happened."
+
+"But you have no notion as to what it could have been?"
+
+"None."
+
+"One more question. How did your mother take the matter?"
+
+"She was angry, and said that I was never to speak of the matter
+again."
+
+"And your father? Did you tell him?"
+
+"Yes; and he seemed to think, with me, that something had
+happened, and that I should hear of Hosmer again. As he said,
+what interest could anyone have in bringing me to the doors of
+the church, and then leaving me? Now, if he had borrowed my
+money, or if he had married me and got my money settled on him,
+there might be some reason, but Hosmer was very independent about
+money and never would look at a shilling of mine. And yet, what
+could have happened? And why could he not write? Oh, it drives me
+half-mad to think of it, and I can't sleep a wink at night." She
+pulled a little handkerchief out of her muff and began to sob
+heavily into it.
+
+"I shall glance into the case for you," said Holmes, rising, "and
+I have no doubt that we shall reach some definite result. Let the
+weight of the matter rest upon me now, and do not let your mind
+dwell upon it further. Above all, try to let Mr. Hosmer Angel
+vanish from your memory, as he has done from your life."
+
+"Then you don't think I'll see him again?"
+
+"I fear not."
+
+"Then what has happened to him?"
+
+"You will leave that question in my hands. I should like an
+accurate description of him and any letters of his which you can
+spare."
+
+"I advertised for him in last Saturday's Chronicle," said she.
+"Here is the slip and here are four letters from him."
+
+"Thank you. And your address?"
+
+"No. 31 Lyon Place, Camberwell."
+
+"Mr. Angel's address you never had, I understand. Where is your
+father's place of business?"
+
+"He travels for Westhouse & Marbank, the great claret importers
+of Fenchurch Street."
+
+"Thank you. You have made your statement very clearly. You will
+leave the papers here, and remember the advice which I have given
+you. Let the whole incident be a sealed book, and do not allow it
+to affect your life."
+
+"You are very kind, Mr. Holmes, but I cannot do that. I shall be
+true to Hosmer. He shall find me ready when he comes back."
+
+For all the preposterous hat and the vacuous face, there was
+something noble in the simple faith of our visitor which
+compelled our respect. She laid her little bundle of papers upon
+the table and went her way, with a promise to come again whenever
+she might be summoned.
+
+Sherlock Holmes sat silent for a few minutes with his fingertips
+still pressed together, his legs stretched out in front of him,
+and his gaze directed upward to the ceiling. Then he took down
+from the rack the old and oily clay pipe, which was to him as a
+counsellor, and, having lit it, he leaned back in his chair, with
+the thick blue cloud-wreaths spinning up from him, and a look of
+infinite languor in his face.
+
+"Quite an interesting study, that maiden," he observed. "I found
+her more interesting than her little problem, which, by the way,
+is rather a trite one. You will find parallel cases, if you
+consult my index, in Andover in '77, and there was something of
+the sort at The Hague last year. Old as is the idea, however,
+there were one or two details which were new to me. But the
+maiden herself was most instructive."
+
+"You appeared to read a good deal upon her which was quite
+invisible to me," I remarked.
+
+"Not invisible but unnoticed, Watson. You did not know where to
+look, and so you missed all that was important. I can never bring
+you to realise the importance of sleeves, the suggestiveness of
+thumb-nails, or the great issues that may hang from a boot-lace.
+Now, what did you gather from that woman's appearance? Describe
+it."
+
+"Well, she had a slate-coloured, broad-brimmed straw hat, with a
+feather of a brickish red. Her jacket was black, with black beads
+sewn upon it, and a fringe of little black jet ornaments. Her
+dress was brown, rather darker than coffee colour, with a little
+purple plush at the neck and sleeves. Her gloves were greyish and
+were worn through at the right forefinger. Her boots I didn't
+observe. She had small round, hanging gold earrings, and a
+general air of being fairly well-to-do in a vulgar, comfortable,
+easy-going way."
+
+Sherlock Holmes clapped his hands softly together and chuckled.
+
+"'Pon my word, Watson, you are coming along wonderfully. You have
+really done very well indeed. It is true that you have missed
+everything of importance, but you have hit upon the method, and
+you have a quick eye for colour. Never trust to general
+impressions, my boy, but concentrate yourself upon details. My
+first glance is always at a woman's sleeve. In a man it is
+perhaps better first to take the knee of the trouser. As you
+observe, this woman had plush upon her sleeves, which is a most
+useful material for showing traces. The double line a little
+above the wrist, where the typewritist presses against the table,
+was beautifully defined. The sewing-machine, of the hand type,
+leaves a similar mark, but only on the left arm, and on the side
+of it farthest from the thumb, instead of being right across the
+broadest part, as this was. I then glanced at her face, and,
+observing the dint of a pince-nez at either side of her nose, I
+ventured a remark upon short sight and typewriting, which seemed
+to surprise her."
+
+"It surprised me."
+
+"But, surely, it was obvious. I was then much surprised and
+interested on glancing down to observe that, though the boots
+which she was wearing were not unlike each other, they were
+really odd ones; the one having a slightly decorated toe-cap, and
+the other a plain one. One was buttoned only in the two lower
+buttons out of five, and the other at the first, third, and
+fifth. Now, when you see that a young lady, otherwise neatly
+dressed, has come away from home with odd boots, half-buttoned,
+it is no great deduction to say that she came away in a hurry."
+
+"And what else?" I asked, keenly interested, as I always was, by
+my friend's incisive reasoning.
+
+"I noted, in passing, that she had written a note before leaving
+home but after being fully dressed. You observed that her right
+glove was torn at the forefinger, but you did not apparently see
+that both glove and finger were stained with violet ink. She had
+written in a hurry and dipped her pen too deep. It must have been
+this morning, or the mark would not remain clear upon the finger.
+All this is amusing, though rather elementary, but I must go back
+to business, Watson. Would you mind reading me the advertised
+description of Mr. Hosmer Angel?"
+
+I held the little printed slip to the light.
+
+"Missing," it said, "on the morning of the fourteenth, a gentleman
+named Hosmer Angel. About five ft. seven in. in height;
+strongly built, sallow complexion, black hair, a little bald in
+the centre, bushy, black side-whiskers and moustache; tinted
+glasses, slight infirmity of speech. Was dressed, when last seen,
+in black frock-coat faced with silk, black waistcoat, gold Albert
+chain, and grey Harris tweed trousers, with brown gaiters over
+elastic-sided boots. Known to have been employed in an office in
+Leadenhall Street. Anybody bringing--"
+
+"That will do," said Holmes. "As to the letters," he continued,
+glancing over them, "they are very commonplace. Absolutely no
+clue in them to Mr. Angel, save that he quotes Balzac once. There
+is one remarkable point, however, which will no doubt strike
+you."
+
+"They are typewritten," I remarked.
+
+"Not only that, but the signature is typewritten. Look at the
+neat little 'Hosmer Angel' at the bottom. There is a date, you
+see, but no superscription except Leadenhall Street, which is
+rather vague. The point about the signature is very suggestive--in
+fact, we may call it conclusive."
+
+"Of what?"
+
+"My dear fellow, is it possible you do not see how strongly it
+bears upon the case?"
+
+"I cannot say that I do unless it were that he wished to be able
+to deny his signature if an action for breach of promise were
+instituted."
+
+"No, that was not the point. However, I shall write two letters,
+which should settle the matter. One is to a firm in the City, the
+other is to the young lady's stepfather, Mr. Windibank, asking
+him whether he could meet us here at six o'clock tomorrow
+evening. It is just as well that we should do business with the
+male relatives. And now, Doctor, we can do nothing until the
+answers to those letters come, so we may put our little problem
+upon the shelf for the interim."
+
+I had had so many reasons to believe in my friend's subtle powers
+of reasoning and extraordinary energy in action that I felt that
+he must have some solid grounds for the assured and easy
+demeanour with which he treated the singular mystery which he had
+been called upon to fathom. Once only had I known him to fail, in
+the case of the King of Bohemia and of the Irene Adler
+photograph; but when I looked back to the weird business of the
+Sign of Four, and the extraordinary circumstances connected with
+the Study in Scarlet, I felt that it would be a strange tangle
+indeed which he could not unravel.
+
+I left him then, still puffing at his black clay pipe, with the
+conviction that when I came again on the next evening I would
+find that he held in his hands all the clues which would lead up
+to the identity of the disappearing bridegroom of Miss Mary
+Sutherland.
+
+A professional case of great gravity was engaging my own
+attention at the time, and the whole of next day I was busy at
+the bedside of the sufferer. It was not until close upon six
+o'clock that I found myself free and was able to spring into a
+hansom and drive to Baker Street, half afraid that I might be too
+late to assist at the dénouement of the little mystery. I found
+Sherlock Holmes alone, however, half asleep, with his long, thin
+form curled up in the recesses of his armchair. A formidable
+array of bottles and test-tubes, with the pungent cleanly smell
+of hydrochloric acid, told me that he had spent his day in the
+chemical work which was so dear to him.
+
+"Well, have you solved it?" I asked as I entered.
+
+"Yes. It was the bisulphate of baryta."
+
+"No, no, the mystery!" I cried.
+
+"Oh, that! I thought of the salt that I have been working upon.
+There was never any mystery in the matter, though, as I said
+yesterday, some of the details are of interest. The only drawback
+is that there is no law, I fear, that can touch the scoundrel."
+
+"Who was he, then, and what was his object in deserting Miss
+Sutherland?"
+
+The question was hardly out of my mouth, and Holmes had not yet
+opened his lips to reply, when we heard a heavy footfall in the
+passage and a tap at the door.
+
+"This is the girl's stepfather, Mr. James Windibank," said
+Holmes. "He has written to me to say that he would be here at
+six. Come in!"
+
+The man who entered was a sturdy, middle-sized fellow, some
+thirty years of age, clean-shaven, and sallow-skinned, with a
+bland, insinuating manner, and a pair of wonderfully sharp and
+penetrating grey eyes. He shot a questioning glance at each of
+us, placed his shiny top-hat upon the sideboard, and with a
+slight bow sidled down into the nearest chair.
+
+"Good-evening, Mr. James Windibank," said Holmes. "I think that
+this typewritten letter is from you, in which you made an
+appointment with me for six o'clock?"
+
+"Yes, sir. I am afraid that I am a little late, but I am not
+quite my own master, you know. I am sorry that Miss Sutherland
+has troubled you about this little matter, for I think it is far
+better not to wash linen of the sort in public. It was quite
+against my wishes that she came, but she is a very excitable,
+impulsive girl, as you may have noticed, and she is not easily
+controlled when she has made up her mind on a point. Of course, I
+did not mind you so much, as you are not connected with the
+official police, but it is not pleasant to have a family
+misfortune like this noised abroad. Besides, it is a useless
+expense, for how could you possibly find this Hosmer Angel?"
+
+"On the contrary," said Holmes quietly; "I have every reason to
+believe that I will succeed in discovering Mr. Hosmer Angel."
+
+Mr. Windibank gave a violent start and dropped his gloves. "I am
+delighted to hear it," he said.
+
+"It is a curious thing," remarked Holmes, "that a typewriter has
+really quite as much individuality as a man's handwriting. Unless
+they are quite new, no two of them write exactly alike. Some
+letters get more worn than others, and some wear only on one
+side. Now, you remark in this note of yours, Mr. Windibank, that
+in every case there is some little slurring over of the 'e,' and
+a slight defect in the tail of the 'r.' There are fourteen other
+characteristics, but those are the more obvious."
+
+"We do all our correspondence with this machine at the office,
+and no doubt it is a little worn," our visitor answered, glancing
+keenly at Holmes with his bright little eyes.
+
+"And now I will show you what is really a very interesting study,
+Mr. Windibank," Holmes continued. "I think of writing another
+little monograph some of these days on the typewriter and its
+relation to crime. It is a subject to which I have devoted some
+little attention. I have here four letters which purport to come
+from the missing man. They are all typewritten. In each case, not
+only are the 'e's' slurred and the 'r's' tailless, but you will
+observe, if you care to use my magnifying lens, that the fourteen
+other characteristics to which I have alluded are there as well."
+
+Mr. Windibank sprang out of his chair and picked up his hat. "I
+cannot waste time over this sort of fantastic talk, Mr. Holmes,"
+he said. "If you can catch the man, catch him, and let me know
+when you have done it."
+
+"Certainly," said Holmes, stepping over and turning the key in
+the door. "I let you know, then, that I have caught him!"
+
+"What! where?" shouted Mr. Windibank, turning white to his lips
+and glancing about him like a rat in a trap.
+
+"Oh, it won't do--really it won't," said Holmes suavely. "There
+is no possible getting out of it, Mr. Windibank. It is quite too
+transparent, and it was a very bad compliment when you said that
+it was impossible for me to solve so simple a question. That's
+right! Sit down and let us talk it over."
+
+Our visitor collapsed into a chair, with a ghastly face and a
+glitter of moisture on his brow. "It--it's not actionable," he
+stammered.
+
+"I am very much afraid that it is not. But between ourselves,
+Windibank, it was as cruel and selfish and heartless a trick in a
+petty way as ever came before me. Now, let me just run over the
+course of events, and you will contradict me if I go wrong."
+
+The man sat huddled up in his chair, with his head sunk upon his
+breast, like one who is utterly crushed. Holmes stuck his feet up
+on the corner of the mantelpiece and, leaning back with his hands
+in his pockets, began talking, rather to himself, as it seemed,
+than to us.
+
+"The man married a woman very much older than himself for her
+money," said he, "and he enjoyed the use of the money of the
+daughter as long as she lived with them. It was a considerable
+sum, for people in their position, and the loss of it would have
+made a serious difference. It was worth an effort to preserve it.
+The daughter was of a good, amiable disposition, but affectionate
+and warm-hearted in her ways, so that it was evident that with
+her fair personal advantages, and her little income, she would
+not be allowed to remain single long. Now her marriage would
+mean, of course, the loss of a hundred a year, so what does her
+stepfather do to prevent it? He takes the obvious course of
+keeping her at home and forbidding her to seek the company of
+people of her own age. But soon he found that that would not
+answer forever. She became restive, insisted upon her rights, and
+finally announced her positive intention of going to a certain
+ball. What does her clever stepfather do then? He conceives an
+idea more creditable to his head than to his heart. With the
+connivance and assistance of his wife he disguised himself,
+covered those keen eyes with tinted glasses, masked the face with
+a moustache and a pair of bushy whiskers, sunk that clear voice
+into an insinuating whisper, and doubly secure on account of the
+girl's short sight, he appears as Mr. Hosmer Angel, and keeps off
+other lovers by making love himself."
+
+"It was only a joke at first," groaned our visitor. "We never
+thought that she would have been so carried away."
+
+"Very likely not. However that may be, the young lady was very
+decidedly carried away, and, having quite made up her mind that
+her stepfather was in France, the suspicion of treachery never
+for an instant entered her mind. She was flattered by the
+gentleman's attentions, and the effect was increased by the
+loudly expressed admiration of her mother. Then Mr. Angel began
+to call, for it was obvious that the matter should be pushed as
+far as it would go if a real effect were to be produced. There
+were meetings, and an engagement, which would finally secure the
+girl's affections from turning towards anyone else. But the
+deception could not be kept up forever. These pretended journeys
+to France were rather cumbrous. The thing to do was clearly to
+bring the business to an end in such a dramatic manner that it
+would leave a permanent impression upon the young lady's mind and
+prevent her from looking upon any other suitor for some time to
+come. Hence those vows of fidelity exacted upon a Testament, and
+hence also the allusions to a possibility of something happening
+on the very morning of the wedding. James Windibank wished Miss
+Sutherland to be so bound to Hosmer Angel, and so uncertain as to
+his fate, that for ten years to come, at any rate, she would not
+listen to another man. As far as the church door he brought her,
+and then, as he could go no farther, he conveniently vanished
+away by the old trick of stepping in at one door of a
+four-wheeler and out at the other. I think that was the chain of
+events, Mr. Windibank!"
+
+Our visitor had recovered something of his assurance while Holmes
+had been talking, and he rose from his chair now with a cold
+sneer upon his pale face.
+
+"It may be so, or it may not, Mr. Holmes," said he, "but if you
+are so very sharp you ought to be sharp enough to know that it is
+you who are breaking the law now, and not me. I have done nothing
+actionable from the first, but as long as you keep that door
+locked you lay yourself open to an action for assault and illegal
+constraint."
+
+"The law cannot, as you say, touch you," said Holmes, unlocking
+and throwing open the door, "yet there never was a man who
+deserved punishment more. If the young lady has a brother or a
+friend, he ought to lay a whip across your shoulders. By Jove!"
+he continued, flushing up at the sight of the bitter sneer upon
+the man's face, "it is not part of my duties to my client, but
+here's a hunting crop handy, and I think I shall just treat
+myself to--" He took two swift steps to the whip, but before he
+could grasp it there was a wild clatter of steps upon the stairs,
+the heavy hall door banged, and from the window we could see Mr.
+James Windibank running at the top of his speed down the road.
+
+"There's a cold-blooded scoundrel!" said Holmes, laughing, as he
+threw himself down into his chair once more. "That fellow will
+rise from crime to crime until he does something very bad, and
+ends on a gallows. The case has, in some respects, been not
+entirely devoid of interest."
+
+"I cannot now entirely see all the steps of your reasoning," I
+remarked.
+
+"Well, of course it was obvious from the first that this Mr.
+Hosmer Angel must have some strong object for his curious
+conduct, and it was equally clear that the only man who really
+profited by the incident, as far as we could see, was the
+stepfather. Then the fact that the two men were never together,
+but that the one always appeared when the other was away, was
+suggestive. So were the tinted spectacles and the curious voice,
+which both hinted at a disguise, as did the bushy whiskers. My
+suspicions were all confirmed by his peculiar action in
+typewriting his signature, which, of course, inferred that his
+handwriting was so familiar to her that she would recognise even
+the smallest sample of it. You see all these isolated facts,
+together with many minor ones, all pointed in the same
+direction."
+
+"And how did you verify them?"
+
+"Having once spotted my man, it was easy to get corroboration. I
+knew the firm for which this man worked. Having taken the printed
+description. I eliminated everything from it which could be the
+result of a disguise--the whiskers, the glasses, the voice, and I
+sent it to the firm, with a request that they would inform me
+whether it answered to the description of any of their
+travellers. I had already noticed the peculiarities of the
+typewriter, and I wrote to the man himself at his business
+address asking him if he would come here. As I expected, his
+reply was typewritten and revealed the same trivial but
+characteristic defects. The same post brought me a letter from
+Westhouse & Marbank, of Fenchurch Street, to say that the
+description tallied in every respect with that of their employé,
+James Windibank. Voilà tout!"
+
+"And Miss Sutherland?"
+
+"If I tell her she will not believe me. You may remember the old
+Persian saying, 'There is danger for him who taketh the tiger
+cub, and danger also for whoso snatches a delusion from a woman.'
+There is as much sense in Hafiz as in Horace, and as much
+knowledge of the world."
+
+
+
+ADVENTURE IV. THE BOSCOMBE VALLEY MYSTERY
+
+We were seated at breakfast one morning, my wife and I, when the
+maid brought in a telegram. It was from Sherlock Holmes and ran
+in this way:
+
+"Have you a couple of days to spare? Have just been wired for from
+the west of England in connection with Boscombe Valley tragedy.
+Shall be glad if you will come with me. Air and scenery perfect.
+Leave Paddington by the 11:15."
+
+"What do you say, dear?" said my wife, looking across at me.
+"Will you go?"
+
+"I really don't know what to say. I have a fairly long list at
+present."
+
+"Oh, Anstruther would do your work for you. You have been looking
+a little pale lately. I think that the change would do you good,
+and you are always so interested in Mr. Sherlock Holmes' cases."
+
+"I should be ungrateful if I were not, seeing what I gained
+through one of them," I answered. "But if I am to go, I must pack
+at once, for I have only half an hour."
+
+My experience of camp life in Afghanistan had at least had the
+effect of making me a prompt and ready traveller. My wants were
+few and simple, so that in less than the time stated I was in a
+cab with my valise, rattling away to Paddington Station. Sherlock
+Holmes was pacing up and down the platform, his tall, gaunt
+figure made even gaunter and taller by his long grey
+travelling-cloak and close-fitting cloth cap.
+
+"It is really very good of you to come, Watson," said he. "It
+makes a considerable difference to me, having someone with me on
+whom I can thoroughly rely. Local aid is always either worthless
+or else biassed. If you will keep the two corner seats I shall
+get the tickets."
+
+We had the carriage to ourselves save for an immense litter of
+papers which Holmes had brought with him. Among these he rummaged
+and read, with intervals of note-taking and of meditation, until
+we were past Reading. Then he suddenly rolled them all into a
+gigantic ball and tossed them up onto the rack.
+
+"Have you heard anything of the case?" he asked.
+
+"Not a word. I have not seen a paper for some days."
+
+"The London press has not had very full accounts. I have just
+been looking through all the recent papers in order to master the
+particulars. It seems, from what I gather, to be one of those
+simple cases which are so extremely difficult."
+
+"That sounds a little paradoxical."
+
+"But it is profoundly true. Singularity is almost invariably a
+clue. The more featureless and commonplace a crime is, the more
+difficult it is to bring it home. In this case, however, they
+have established a very serious case against the son of the
+murdered man."
+
+"It is a murder, then?"
+
+"Well, it is conjectured to be so. I shall take nothing for
+granted until I have the opportunity of looking personally into
+it. I will explain the state of things to you, as far as I have
+been able to understand it, in a very few words.
+
+"Boscombe Valley is a country district not very far from Ross, in
+Herefordshire. The largest landed proprietor in that part is a
+Mr. John Turner, who made his money in Australia and returned
+some years ago to the old country. One of the farms which he
+held, that of Hatherley, was let to Mr. Charles McCarthy, who was
+also an ex-Australian. The men had known each other in the
+colonies, so that it was not unnatural that when they came to
+settle down they should do so as near each other as possible.
+Turner was apparently the richer man, so McCarthy became his
+tenant but still remained, it seems, upon terms of perfect
+equality, as they were frequently together. McCarthy had one son,
+a lad of eighteen, and Turner had an only daughter of the same
+age, but neither of them had wives living. They appear to have
+avoided the society of the neighbouring English families and to
+have led retired lives, though both the McCarthys were fond of
+sport and were frequently seen at the race-meetings of the
+neighbourhood. McCarthy kept two servants--a man and a girl.
+Turner had a considerable household, some half-dozen at the
+least. That is as much as I have been able to gather about the
+families. Now for the facts.
+
+"On June 3rd, that is, on Monday last, McCarthy left his house at
+Hatherley about three in the afternoon and walked down to the
+Boscombe Pool, which is a small lake formed by the spreading out
+of the stream which runs down the Boscombe Valley. He had been
+out with his serving-man in the morning at Ross, and he had told
+the man that he must hurry, as he had an appointment of
+importance to keep at three. From that appointment he never came
+back alive.
+
+"From Hatherley Farm-house to the Boscombe Pool is a quarter of a
+mile, and two people saw him as he passed over this ground. One
+was an old woman, whose name is not mentioned, and the other was
+William Crowder, a game-keeper in the employ of Mr. Turner. Both
+these witnesses depose that Mr. McCarthy was walking alone. The
+game-keeper adds that within a few minutes of his seeing Mr.
+McCarthy pass he had seen his son, Mr. James McCarthy, going the
+same way with a gun under his arm. To the best of his belief, the
+father was actually in sight at the time, and the son was
+following him. He thought no more of the matter until he heard in
+the evening of the tragedy that had occurred.
+
+"The two McCarthys were seen after the time when William Crowder,
+the game-keeper, lost sight of them. The Boscombe Pool is thickly
+wooded round, with just a fringe of grass and of reeds round the
+edge. A girl of fourteen, Patience Moran, who is the daughter of
+the lodge-keeper of the Boscombe Valley estate, was in one of the
+woods picking flowers. She states that while she was there she
+saw, at the border of the wood and close by the lake, Mr.
+McCarthy and his son, and that they appeared to be having a
+violent quarrel. She heard Mr. McCarthy the elder using very
+strong language to his son, and she saw the latter raise up his
+hand as if to strike his father. She was so frightened by their
+violence that she ran away and told her mother when she reached
+home that she had left the two McCarthys quarrelling near
+Boscombe Pool, and that she was afraid that they were going to
+fight. She had hardly said the words when young Mr. McCarthy came
+running up to the lodge to say that he had found his father dead
+in the wood, and to ask for the help of the lodge-keeper. He was
+much excited, without either his gun or his hat, and his right
+hand and sleeve were observed to be stained with fresh blood. On
+following him they found the dead body stretched out upon the
+grass beside the pool. The head had been beaten in by repeated
+blows of some heavy and blunt weapon. The injuries were such as
+might very well have been inflicted by the butt-end of his son's
+gun, which was found lying on the grass within a few paces of the
+body. Under these circumstances the young man was instantly
+arrested, and a verdict of 'wilful murder' having been returned
+at the inquest on Tuesday, he was on Wednesday brought before the
+magistrates at Ross, who have referred the case to the next
+Assizes. Those are the main facts of the case as they came out
+before the coroner and the police-court."
+
+"I could hardly imagine a more damning case," I remarked. "If
+ever circumstantial evidence pointed to a criminal it does so
+here."
+
+"Circumstantial evidence is a very tricky thing," answered Holmes
+thoughtfully. "It may seem to point very straight to one thing,
+but if you shift your own point of view a little, you may find it
+pointing in an equally uncompromising manner to something
+entirely different. It must be confessed, however, that the case
+looks exceedingly grave against the young man, and it is very
+possible that he is indeed the culprit. There are several people
+in the neighbourhood, however, and among them Miss Turner, the
+daughter of the neighbouring landowner, who believe in his
+innocence, and who have retained Lestrade, whom you may recollect
+in connection with the Study in Scarlet, to work out the case in
+his interest. Lestrade, being rather puzzled, has referred the
+case to me, and hence it is that two middle-aged gentlemen are
+flying westward at fifty miles an hour instead of quietly
+digesting their breakfasts at home."
+
+"I am afraid," said I, "that the facts are so obvious that you
+will find little credit to be gained out of this case."
+
+"There is nothing more deceptive than an obvious fact," he
+answered, laughing. "Besides, we may chance to hit upon some
+other obvious facts which may have been by no means obvious to
+Mr. Lestrade. You know me too well to think that I am boasting
+when I say that I shall either confirm or destroy his theory by
+means which he is quite incapable of employing, or even of
+understanding. To take the first example to hand, I very clearly
+perceive that in your bedroom the window is upon the right-hand
+side, and yet I question whether Mr. Lestrade would have noted
+even so self-evident a thing as that."
+
+"How on earth--"
+
+"My dear fellow, I know you well. I know the military neatness
+which characterises you. You shave every morning, and in this
+season you shave by the sunlight; but since your shaving is less
+and less complete as we get farther back on the left side, until
+it becomes positively slovenly as we get round the angle of the
+jaw, it is surely very clear that that side is less illuminated
+than the other. I could not imagine a man of your habits looking
+at himself in an equal light and being satisfied with such a
+result. I only quote this as a trivial example of observation and
+inference. Therein lies my métier, and it is just possible that
+it may be of some service in the investigation which lies before
+us. There are one or two minor points which were brought out in
+the inquest, and which are worth considering."
+
+"What are they?"
+
+"It appears that his arrest did not take place at once, but after
+the return to Hatherley Farm. On the inspector of constabulary
+informing him that he was a prisoner, he remarked that he was not
+surprised to hear it, and that it was no more than his deserts.
+This observation of his had the natural effect of removing any
+traces of doubt which might have remained in the minds of the
+coroner's jury."
+
+"It was a confession," I ejaculated.
+
+"No, for it was followed by a protestation of innocence."
+
+"Coming on the top of such a damning series of events, it was at
+least a most suspicious remark."
+
+"On the contrary," said Holmes, "it is the brightest rift which I
+can at present see in the clouds. However innocent he might be,
+he could not be such an absolute imbecile as not to see that the
+circumstances were very black against him. Had he appeared
+surprised at his own arrest, or feigned indignation at it, I
+should have looked upon it as highly suspicious, because such
+surprise or anger would not be natural under the circumstances,
+and yet might appear to be the best policy to a scheming man. His
+frank acceptance of the situation marks him as either an innocent
+man, or else as a man of considerable self-restraint and
+firmness. As to his remark about his deserts, it was also not
+unnatural if you consider that he stood beside the dead body of
+his father, and that there is no doubt that he had that very day
+so far forgotten his filial duty as to bandy words with him, and
+even, according to the little girl whose evidence is so
+important, to raise his hand as if to strike him. The
+self-reproach and contrition which are displayed in his remark
+appear to me to be the signs of a healthy mind rather than of a
+guilty one."
+
+I shook my head. "Many men have been hanged on far slighter
+evidence," I remarked.
+
+"So they have. And many men have been wrongfully hanged."
+
+"What is the young man's own account of the matter?"
+
+"It is, I am afraid, not very encouraging to his supporters,
+though there are one or two points in it which are suggestive.
+You will find it here, and may read it for yourself."
+
+He picked out from his bundle a copy of the local Herefordshire
+paper, and having turned down the sheet he pointed out the
+paragraph in which the unfortunate young man had given his own
+statement of what had occurred. I settled myself down in the
+corner of the carriage and read it very carefully. It ran in this
+way:
+
+"Mr. James McCarthy, the only son of the deceased, was then called
+and gave evidence as follows: 'I had been away from home for
+three days at Bristol, and had only just returned upon the
+morning of last Monday, the 3rd. My father was absent from home at
+the time of my arrival, and I was informed by the maid that he
+had driven over to Ross with John Cobb, the groom. Shortly after
+my return I heard the wheels of his trap in the yard, and,
+looking out of my window, I saw him get out and walk rapidly out
+of the yard, though I was not aware in which direction he was
+going. I then took my gun and strolled out in the direction of
+the Boscombe Pool, with the intention of visiting the rabbit
+warren which is upon the other side. On my way I saw William
+Crowder, the game-keeper, as he had stated in his evidence; but
+he is mistaken in thinking that I was following my father. I had
+no idea that he was in front of me. When about a hundred yards
+from the pool I heard a cry of "Cooee!" which was a usual signal
+between my father and myself. I then hurried forward, and found
+him standing by the pool. He appeared to be much surprised at
+seeing me and asked me rather roughly what I was doing there. A
+conversation ensued which led to high words and almost to blows,
+for my father was a man of a very violent temper. Seeing that his
+passion was becoming ungovernable, I left him and returned
+towards Hatherley Farm. I had not gone more than 150 yards,
+however, when I heard a hideous outcry behind me, which caused me
+to run back again. I found my father expiring upon the ground,
+with his head terribly injured. I dropped my gun and held him in
+my arms, but he almost instantly expired. I knelt beside him for
+some minutes, and then made my way to Mr. Turner's lodge-keeper,
+his house being the nearest, to ask for assistance. I saw no one
+near my father when I returned, and I have no idea how he came by
+his injuries. He was not a popular man, being somewhat cold and
+forbidding in his manners, but he had, as far as I know, no
+active enemies. I know nothing further of the matter.'
+
+"The Coroner: Did your father make any statement to you before
+he died?
+
+"Witness: He mumbled a few words, but I could only catch some
+allusion to a rat.
+
+"The Coroner: What did you understand by that?
+
+"Witness: It conveyed no meaning to me. I thought that he was
+delirious.
+
+"The Coroner: What was the point upon which you and your father
+had this final quarrel?
+
+"Witness: I should prefer not to answer.
+
+"The Coroner: I am afraid that I must press it.
+
+"Witness: It is really impossible for me to tell you. I can
+assure you that it has nothing to do with the sad tragedy which
+followed.
+
+"The Coroner: That is for the court to decide. I need not point
+out to you that your refusal to answer will prejudice your case
+considerably in any future proceedings which may arise.
+
+"Witness: I must still refuse.
+
+"The Coroner: I understand that the cry of 'Cooee' was a common
+signal between you and your father?
+
+"Witness: It was.
+
+"The Coroner: How was it, then, that he uttered it before he saw
+you, and before he even knew that you had returned from Bristol?
+
+"Witness (with considerable confusion): I do not know.
+
+"A Juryman: Did you see nothing which aroused your suspicions
+when you returned on hearing the cry and found your father
+fatally injured?
+
+"Witness: Nothing definite.
+
+"The Coroner: What do you mean?
+
+"Witness: I was so disturbed and excited as I rushed out into
+the open, that I could think of nothing except of my father. Yet
+I have a vague impression that as I ran forward something lay
+upon the ground to the left of me. It seemed to me to be
+something grey in colour, a coat of some sort, or a plaid perhaps.
+When I rose from my father I looked round for it, but it was
+gone.
+
+"'Do you mean that it disappeared before you went for help?'
+
+"'Yes, it was gone.'
+
+"'You cannot say what it was?'
+
+"'No, I had a feeling something was there.'
+
+"'How far from the body?'
+
+"'A dozen yards or so.'
+
+"'And how far from the edge of the wood?'
+
+"'About the same.'
+
+"'Then if it was removed it was while you were within a dozen
+yards of it?'
+
+"'Yes, but with my back towards it.'
+
+"This concluded the examination of the witness."
+
+"I see," said I as I glanced down the column, "that the coroner
+in his concluding remarks was rather severe upon young McCarthy.
+He calls attention, and with reason, to the discrepancy about his
+father having signalled to him before seeing him, also to his
+refusal to give details of his conversation with his father, and
+his singular account of his father's dying words. They are all,
+as he remarks, very much against the son."
+
+Holmes laughed softly to himself and stretched himself out upon
+the cushioned seat. "Both you and the coroner have been at some
+pains," said he, "to single out the very strongest points in the
+young man's favour. Don't you see that you alternately give him
+credit for having too much imagination and too little? Too
+little, if he could not invent a cause of quarrel which would
+give him the sympathy of the jury; too much, if he evolved from
+his own inner consciousness anything so outré as a dying
+reference to a rat, and the incident of the vanishing cloth. No,
+sir, I shall approach this case from the point of view that what
+this young man says is true, and we shall see whither that
+hypothesis will lead us. And now here is my pocket Petrarch, and
+not another word shall I say of this case until we are on the
+scene of action. We lunch at Swindon, and I see that we shall be
+there in twenty minutes."
+
+It was nearly four o'clock when we at last, after passing through
+the beautiful Stroud Valley, and over the broad gleaming Severn,
+found ourselves at the pretty little country-town of Ross. A
+lean, ferret-like man, furtive and sly-looking, was waiting for
+us upon the platform. In spite of the light brown dustcoat and
+leather-leggings which he wore in deference to his rustic
+surroundings, I had no difficulty in recognising Lestrade, of
+Scotland Yard. With him we drove to the Hereford Arms where a
+room had already been engaged for us.
+
+"I have ordered a carriage," said Lestrade as we sat over a cup
+of tea. "I knew your energetic nature, and that you would not be
+happy until you had been on the scene of the crime."
+
+"It was very nice and complimentary of you," Holmes answered. "It
+is entirely a question of barometric pressure."
+
+Lestrade looked startled. "I do not quite follow," he said.
+
+"How is the glass? Twenty-nine, I see. No wind, and not a cloud
+in the sky. I have a caseful of cigarettes here which need
+smoking, and the sofa is very much superior to the usual country
+hotel abomination. I do not think that it is probable that I
+shall use the carriage to-night."
+
+Lestrade laughed indulgently. "You have, no doubt, already formed
+your conclusions from the newspapers," he said. "The case is as
+plain as a pikestaff, and the more one goes into it the plainer
+it becomes. Still, of course, one can't refuse a lady, and such a
+very positive one, too. She has heard of you, and would have your
+opinion, though I repeatedly told her that there was nothing
+which you could do which I had not already done. Why, bless my
+soul! here is her carriage at the door."
+
+He had hardly spoken before there rushed into the room one of the
+most lovely young women that I have ever seen in my life. Her
+violet eyes shining, her lips parted, a pink flush upon her
+cheeks, all thought of her natural reserve lost in her
+overpowering excitement and concern.
+
+"Oh, Mr. Sherlock Holmes!" she cried, glancing from one to the
+other of us, and finally, with a woman's quick intuition,
+fastening upon my companion, "I am so glad that you have come. I
+have driven down to tell you so. I know that James didn't do it.
+I know it, and I want you to start upon your work knowing it,
+too. Never let yourself doubt upon that point. We have known each
+other since we were little children, and I know his faults as no
+one else does; but he is too tender-hearted to hurt a fly. Such a
+charge is absurd to anyone who really knows him."
+
+"I hope we may clear him, Miss Turner," said Sherlock Holmes.
+"You may rely upon my doing all that I can."
+
+"But you have read the evidence. You have formed some conclusion?
+Do you not see some loophole, some flaw? Do you not yourself
+think that he is innocent?"
+
+"I think that it is very probable."
+
+"There, now!" she cried, throwing back her head and looking
+defiantly at Lestrade. "You hear! He gives me hopes."
+
+Lestrade shrugged his shoulders. "I am afraid that my colleague
+has been a little quick in forming his conclusions," he said.
+
+"But he is right. Oh! I know that he is right. James never did
+it. And about his quarrel with his father, I am sure that the
+reason why he would not speak about it to the coroner was because
+I was concerned in it."
+
+"In what way?" asked Holmes.
+
+"It is no time for me to hide anything. James and his father had
+many disagreements about me. Mr. McCarthy was very anxious that
+there should be a marriage between us. James and I have always
+loved each other as brother and sister; but of course he is young
+and has seen very little of life yet, and--and--well, he
+naturally did not wish to do anything like that yet. So there
+were quarrels, and this, I am sure, was one of them."
+
+"And your father?" asked Holmes. "Was he in favour of such a
+union?"
+
+"No, he was averse to it also. No one but Mr. McCarthy was in
+favour of it." A quick blush passed over her fresh young face as
+Holmes shot one of his keen, questioning glances at her.
+
+"Thank you for this information," said he. "May I see your father
+if I call to-morrow?"
+
+"I am afraid the doctor won't allow it."
+
+"The doctor?"
+
+"Yes, have you not heard? Poor father has never been strong for
+years back, but this has broken him down completely. He has taken
+to his bed, and Dr. Willows says that he is a wreck and that his
+nervous system is shattered. Mr. McCarthy was the only man alive
+who had known dad in the old days in Victoria."
+
+"Ha! In Victoria! That is important."
+
+"Yes, at the mines."
+
+"Quite so; at the gold-mines, where, as I understand, Mr. Turner
+made his money."
+
+"Yes, certainly."
+
+"Thank you, Miss Turner. You have been of material assistance to
+me."
+
+"You will tell me if you have any news to-morrow. No doubt you
+will go to the prison to see James. Oh, if you do, Mr. Holmes, do
+tell him that I know him to be innocent."
+
+"I will, Miss Turner."
+
+"I must go home now, for dad is very ill, and he misses me so if
+I leave him. Good-bye, and God help you in your undertaking." She
+hurried from the room as impulsively as she had entered, and we
+heard the wheels of her carriage rattle off down the street.
+
+"I am ashamed of you, Holmes," said Lestrade with dignity after a
+few minutes' silence. "Why should you raise up hopes which you
+are bound to disappoint? I am not over-tender of heart, but I
+call it cruel."
+
+"I think that I see my way to clearing James McCarthy," said
+Holmes. "Have you an order to see him in prison?"
+
+"Yes, but only for you and me."
+
+"Then I shall reconsider my resolution about going out. We have
+still time to take a train to Hereford and see him to-night?"
+
+"Ample."
+
+"Then let us do so. Watson, I fear that you will find it very
+slow, but I shall only be away a couple of hours."
+
+I walked down to the station with them, and then wandered through
+the streets of the little town, finally returning to the hotel,
+where I lay upon the sofa and tried to interest myself in a
+yellow-backed novel. The puny plot of the story was so thin,
+however, when compared to the deep mystery through which we were
+groping, and I found my attention wander so continually from the
+action to the fact, that I at last flung it across the room and
+gave myself up entirely to a consideration of the events of the
+day. Supposing that this unhappy young man's story were
+absolutely true, then what hellish thing, what absolutely
+unforeseen and extraordinary calamity could have occurred between
+the time when he parted from his father, and the moment when,
+drawn back by his screams, he rushed into the glade? It was
+something terrible and deadly. What could it be? Might not the
+nature of the injuries reveal something to my medical instincts?
+I rang the bell and called for the weekly county paper, which
+contained a verbatim account of the inquest. In the surgeon's
+deposition it was stated that the posterior third of the left
+parietal bone and the left half of the occipital bone had been
+shattered by a heavy blow from a blunt weapon. I marked the spot
+upon my own head. Clearly such a blow must have been struck from
+behind. That was to some extent in favour of the accused, as when
+seen quarrelling he was face to face with his father. Still, it
+did not go for very much, for the older man might have turned his
+back before the blow fell. Still, it might be worth while to call
+Holmes' attention to it. Then there was the peculiar dying
+reference to a rat. What could that mean? It could not be
+delirium. A man dying from a sudden blow does not commonly become
+delirious. No, it was more likely to be an attempt to explain how
+he met his fate. But what could it indicate? I cudgelled my
+brains to find some possible explanation. And then the incident
+of the grey cloth seen by young McCarthy. If that were true the
+murderer must have dropped some part of his dress, presumably his
+overcoat, in his flight, and must have had the hardihood to
+return and to carry it away at the instant when the son was
+kneeling with his back turned not a dozen paces off. What a
+tissue of mysteries and improbabilities the whole thing was! I
+did not wonder at Lestrade's opinion, and yet I had so much faith
+in Sherlock Holmes' insight that I could not lose hope as long
+as every fresh fact seemed to strengthen his conviction of young
+McCarthy's innocence.
+
+It was late before Sherlock Holmes returned. He came back alone,
+for Lestrade was staying in lodgings in the town.
+
+"The glass still keeps very high," he remarked as he sat down.
+"It is of importance that it should not rain before we are able
+to go over the ground. On the other hand, a man should be at his
+very best and keenest for such nice work as that, and I did not
+wish to do it when fagged by a long journey. I have seen young
+McCarthy."
+
+"And what did you learn from him?"
+
+"Nothing."
+
+"Could he throw no light?"
+
+"None at all. I was inclined to think at one time that he knew
+who had done it and was screening him or her, but I am convinced
+now that he is as puzzled as everyone else. He is not a very
+quick-witted youth, though comely to look at and, I should think,
+sound at heart."
+
+"I cannot admire his taste," I remarked, "if it is indeed a fact
+that he was averse to a marriage with so charming a young lady as
+this Miss Turner."
+
+"Ah, thereby hangs a rather painful tale. This fellow is madly,
+insanely, in love with her, but some two years ago, when he was
+only a lad, and before he really knew her, for she had been away
+five years at a boarding-school, what does the idiot do but get
+into the clutches of a barmaid in Bristol and marry her at a
+registry office? No one knows a word of the matter, but you can
+imagine how maddening it must be to him to be upbraided for not
+doing what he would give his very eyes to do, but what he knows
+to be absolutely impossible. It was sheer frenzy of this sort
+which made him throw his hands up into the air when his father,
+at their last interview, was goading him on to propose to Miss
+Turner. On the other hand, he had no means of supporting himself,
+and his father, who was by all accounts a very hard man, would
+have thrown him over utterly had he known the truth. It was with
+his barmaid wife that he had spent the last three days in
+Bristol, and his father did not know where he was. Mark that
+point. It is of importance. Good has come out of evil, however,
+for the barmaid, finding from the papers that he is in serious
+trouble and likely to be hanged, has thrown him over utterly and
+has written to him to say that she has a husband already in the
+Bermuda Dockyard, so that there is really no tie between them. I
+think that that bit of news has consoled young McCarthy for all
+that he has suffered."
+
+"But if he is innocent, who has done it?"
+
+"Ah! who? I would call your attention very particularly to two
+points. One is that the murdered man had an appointment with
+someone at the pool, and that the someone could not have been his
+son, for his son was away, and he did not know when he would
+return. The second is that the murdered man was heard to cry
+'Cooee!' before he knew that his son had returned. Those are the
+crucial points upon which the case depends. And now let us talk
+about George Meredith, if you please, and we shall leave all
+minor matters until to-morrow."
+
+There was no rain, as Holmes had foretold, and the morning broke
+bright and cloudless. At nine o'clock Lestrade called for us with
+the carriage, and we set off for Hatherley Farm and the Boscombe
+Pool.
+
+"There is serious news this morning," Lestrade observed. "It is
+said that Mr. Turner, of the Hall, is so ill that his life is
+despaired of."
+
+"An elderly man, I presume?" said Holmes.
+
+"About sixty; but his constitution has been shattered by his life
+abroad, and he has been in failing health for some time. This
+business has had a very bad effect upon him. He was an old friend
+of McCarthy's, and, I may add, a great benefactor to him, for I
+have learned that he gave him Hatherley Farm rent free."
+
+"Indeed! That is interesting," said Holmes.
+
+"Oh, yes! In a hundred other ways he has helped him. Everybody
+about here speaks of his kindness to him."
+
+"Really! Does it not strike you as a little singular that this
+McCarthy, who appears to have had little of his own, and to have
+been under such obligations to Turner, should still talk of
+marrying his son to Turner's daughter, who is, presumably,
+heiress to the estate, and that in such a very cocksure manner,
+as if it were merely a case of a proposal and all else would
+follow? It is the more strange, since we know that Turner himself
+was averse to the idea. The daughter told us as much. Do you not
+deduce something from that?"
+
+"We have got to the deductions and the inferences," said
+Lestrade, winking at me. "I find it hard enough to tackle facts,
+Holmes, without flying away after theories and fancies."
+
+"You are right," said Holmes demurely; "you do find it very hard
+to tackle the facts."
+
+"Anyhow, I have grasped one fact which you seem to find it
+difficult to get hold of," replied Lestrade with some warmth.
+
+"And that is--"
+
+"That McCarthy senior met his death from McCarthy junior and that
+all theories to the contrary are the merest moonshine."
+
+"Well, moonshine is a brighter thing than fog," said Holmes,
+laughing. "But I am very much mistaken if this is not Hatherley
+Farm upon the left."
+
+"Yes, that is it." It was a widespread, comfortable-looking
+building, two-storied, slate-roofed, with great yellow blotches
+of lichen upon the grey walls. The drawn blinds and the smokeless
+chimneys, however, gave it a stricken look, as though the weight
+of this horror still lay heavy upon it. We called at the door,
+when the maid, at Holmes' request, showed us the boots which her
+master wore at the time of his death, and also a pair of the
+son's, though not the pair which he had then had. Having measured
+these very carefully from seven or eight different points, Holmes
+desired to be led to the court-yard, from which we all followed
+the winding track which led to Boscombe Pool.
+
+Sherlock Holmes was transformed when he was hot upon such a scent
+as this. Men who had only known the quiet thinker and logician of
+Baker Street would have failed to recognise him. His face flushed
+and darkened. His brows were drawn into two hard black lines,
+while his eyes shone out from beneath them with a steely glitter.
+His face was bent downward, his shoulders bowed, his lips
+compressed, and the veins stood out like whipcord in his long,
+sinewy neck. His nostrils seemed to dilate with a purely animal
+lust for the chase, and his mind was so absolutely concentrated
+upon the matter before him that a question or remark fell
+unheeded upon his ears, or, at the most, only provoked a quick,
+impatient snarl in reply. Swiftly and silently he made his way
+along the track which ran through the meadows, and so by way of
+the woods to the Boscombe Pool. It was damp, marshy ground, as is
+all that district, and there were marks of many feet, both upon
+the path and amid the short grass which bounded it on either
+side. Sometimes Holmes would hurry on, sometimes stop dead, and
+once he made quite a little detour into the meadow. Lestrade and
+I walked behind him, the detective indifferent and contemptuous,
+while I watched my friend with the interest which sprang from the
+conviction that every one of his actions was directed towards a
+definite end.
+
+The Boscombe Pool, which is a little reed-girt sheet of water
+some fifty yards across, is situated at the boundary between the
+Hatherley Farm and the private park of the wealthy Mr. Turner.
+Above the woods which lined it upon the farther side we could see
+the red, jutting pinnacles which marked the site of the rich
+landowner's dwelling. On the Hatherley side of the pool the woods
+grew very thick, and there was a narrow belt of sodden grass
+twenty paces across between the edge of the trees and the reeds
+which lined the lake. Lestrade showed us the exact spot at which
+the body had been found, and, indeed, so moist was the ground,
+that I could plainly see the traces which had been left by the
+fall of the stricken man. To Holmes, as I could see by his eager
+face and peering eyes, very many other things were to be read
+upon the trampled grass. He ran round, like a dog who is picking
+up a scent, and then turned upon my companion.
+
+"What did you go into the pool for?" he asked.
+
+"I fished about with a rake. I thought there might be some weapon
+or other trace. But how on earth--"
+
+"Oh, tut, tut! I have no time! That left foot of yours with its
+inward twist is all over the place. A mole could trace it, and
+there it vanishes among the reeds. Oh, how simple it would all
+have been had I been here before they came like a herd of buffalo
+and wallowed all over it. Here is where the party with the
+lodge-keeper came, and they have covered all tracks for six or
+eight feet round the body. But here are three separate tracks of
+the same feet." He drew out a lens and lay down upon his
+waterproof to have a better view, talking all the time rather to
+himself than to us. "These are young McCarthy's feet. Twice he
+was walking, and once he ran swiftly, so that the soles are
+deeply marked and the heels hardly visible. That bears out his
+story. He ran when he saw his father on the ground. Then here are
+the father's feet as he paced up and down. What is this, then? It
+is the butt-end of the gun as the son stood listening. And this?
+Ha, ha! What have we here? Tiptoes! tiptoes! Square, too, quite
+unusual boots! They come, they go, they come again--of course
+that was for the cloak. Now where did they come from?" He ran up
+and down, sometimes losing, sometimes finding the track until we
+were well within the edge of the wood and under the shadow of a
+great beech, the largest tree in the neighbourhood. Holmes traced
+his way to the farther side of this and lay down once more upon
+his face with a little cry of satisfaction. For a long time he
+remained there, turning over the leaves and dried sticks,
+gathering up what seemed to me to be dust into an envelope and
+examining with his lens not only the ground but even the bark of
+the tree as far as he could reach. A jagged stone was lying among
+the moss, and this also he carefully examined and retained. Then
+he followed a pathway through the wood until he came to the
+highroad, where all traces were lost.
+
+"It has been a case of considerable interest," he remarked,
+returning to his natural manner. "I fancy that this grey house on
+the right must be the lodge. I think that I will go in and have a
+word with Moran, and perhaps write a little note. Having done
+that, we may drive back to our luncheon. You may walk to the cab,
+and I shall be with you presently."
+
+It was about ten minutes before we regained our cab and drove
+back into Ross, Holmes still carrying with him the stone which he
+had picked up in the wood.
+
+"This may interest you, Lestrade," he remarked, holding it out.
+"The murder was done with it."
+
+"I see no marks."
+
+"There are none."
+
+"How do you know, then?"
+
+"The grass was growing under it. It had only lain there a few
+days. There was no sign of a place whence it had been taken. It
+corresponds with the injuries. There is no sign of any other
+weapon."
+
+"And the murderer?"
+
+"Is a tall man, left-handed, limps with the right leg, wears
+thick-soled shooting-boots and a grey cloak, smokes Indian
+cigars, uses a cigar-holder, and carries a blunt pen-knife in his
+pocket. There are several other indications, but these may be
+enough to aid us in our search."
+
+Lestrade laughed. "I am afraid that I am still a sceptic," he
+said. "Theories are all very well, but we have to deal with a
+hard-headed British jury."
+
+"Nous verrons," answered Holmes calmly. "You work your own
+method, and I shall work mine. I shall be busy this afternoon,
+and shall probably return to London by the evening train."
+
+"And leave your case unfinished?"
+
+"No, finished."
+
+"But the mystery?"
+
+"It is solved."
+
+"Who was the criminal, then?"
+
+"The gentleman I describe."
+
+"But who is he?"
+
+"Surely it would not be difficult to find out. This is not such a
+populous neighbourhood."
+
+Lestrade shrugged his shoulders. "I am a practical man," he said,
+"and I really cannot undertake to go about the country looking
+for a left-handed gentleman with a game leg. I should become the
+laughing-stock of Scotland Yard."
+
+"All right," said Holmes quietly. "I have given you the chance.
+Here are your lodgings. Good-bye. I shall drop you a line before
+I leave."
+
+Having left Lestrade at his rooms, we drove to our hotel, where
+we found lunch upon the table. Holmes was silent and buried in
+thought with a pained expression upon his face, as one who finds
+himself in a perplexing position.
+
+"Look here, Watson," he said when the cloth was cleared "just sit
+down in this chair and let me preach to you for a little. I don't
+know quite what to do, and I should value your advice. Light a
+cigar and let me expound."
+
+ "Pray do so."
+
+"Well, now, in considering this case there are two points about
+young McCarthy's narrative which struck us both instantly,
+although they impressed me in his favour and you against him. One
+was the fact that his father should, according to his account,
+cry 'Cooee!' before seeing him. The other was his singular dying
+reference to a rat. He mumbled several words, you understand, but
+that was all that caught the son's ear. Now from this double
+point our research must commence, and we will begin it by
+presuming that what the lad says is absolutely true."
+
+"What of this 'Cooee!' then?"
+
+"Well, obviously it could not have been meant for the son. The
+son, as far as he knew, was in Bristol. It was mere chance that
+he was within earshot. The 'Cooee!' was meant to attract the
+attention of whoever it was that he had the appointment with. But
+'Cooee' is a distinctly Australian cry, and one which is used
+between Australians. There is a strong presumption that the
+person whom McCarthy expected to meet him at Boscombe Pool was
+someone who had been in Australia."
+
+"What of the rat, then?"
+
+Sherlock Holmes took a folded paper from his pocket and flattened
+it out on the table. "This is a map of the Colony of Victoria,"
+he said. "I wired to Bristol for it last night." He put his hand
+over part of the map. "What do you read?"
+
+"ARAT," I read.
+
+"And now?" He raised his hand.
+
+"BALLARAT."
+
+"Quite so. That was the word the man uttered, and of which his
+son only caught the last two syllables. He was trying to utter
+the name of his murderer. So and so, of Ballarat."
+
+"It is wonderful!" I exclaimed.
+
+"It is obvious. And now, you see, I had narrowed the field down
+considerably. The possession of a grey garment was a third point
+which, granting the son's statement to be correct, was a
+certainty. We have come now out of mere vagueness to the definite
+conception of an Australian from Ballarat with a grey cloak."
+
+"Certainly."
+
+"And one who was at home in the district, for the pool can only
+be approached by the farm or by the estate, where strangers could
+hardly wander."
+
+"Quite so."
+
+"Then comes our expedition of to-day. By an examination of the
+ground I gained the trifling details which I gave to that
+imbecile Lestrade, as to the personality of the criminal."
+
+"But how did you gain them?"
+
+"You know my method. It is founded upon the observation of
+trifles."
+
+"His height I know that you might roughly judge from the length
+of his stride. His boots, too, might be told from their traces."
+
+"Yes, they were peculiar boots."
+
+"But his lameness?"
+
+"The impression of his right foot was always less distinct than
+his left. He put less weight upon it. Why? Because he limped--he
+was lame."
+
+"But his left-handedness."
+
+"You were yourself struck by the nature of the injury as recorded
+by the surgeon at the inquest. The blow was struck from
+immediately behind, and yet was upon the left side. Now, how can
+that be unless it were by a left-handed man? He had stood behind
+that tree during the interview between the father and son. He had
+even smoked there. I found the ash of a cigar, which my special
+knowledge of tobacco ashes enables me to pronounce as an Indian
+cigar. I have, as you know, devoted some attention to this, and
+written a little monograph on the ashes of 140 different
+varieties of pipe, cigar, and cigarette tobacco. Having found the
+ash, I then looked round and discovered the stump among the moss
+where he had tossed it. It was an Indian cigar, of the variety
+which are rolled in Rotterdam."
+
+"And the cigar-holder?"
+
+"I could see that the end had not been in his mouth. Therefore he
+used a holder. The tip had been cut off, not bitten off, but the
+cut was not a clean one, so I deduced a blunt pen-knife."
+
+"Holmes," I said, "you have drawn a net round this man from which
+he cannot escape, and you have saved an innocent human life as
+truly as if you had cut the cord which was hanging him. I see the
+direction in which all this points. The culprit is--"
+
+"Mr. John Turner," cried the hotel waiter, opening the door of
+our sitting-room, and ushering in a visitor.
+
+The man who entered was a strange and impressive figure. His
+slow, limping step and bowed shoulders gave the appearance of
+decrepitude, and yet his hard, deep-lined, craggy features, and
+his enormous limbs showed that he was possessed of unusual
+strength of body and of character. His tangled beard, grizzled
+hair, and outstanding, drooping eyebrows combined to give an air
+of dignity and power to his appearance, but his face was of an
+ashen white, while his lips and the corners of his nostrils were
+tinged with a shade of blue. It was clear to me at a glance that
+he was in the grip of some deadly and chronic disease.
+
+"Pray sit down on the sofa," said Holmes gently. "You had my
+note?"
+
+"Yes, the lodge-keeper brought it up. You said that you wished to
+see me here to avoid scandal."
+
+"I thought people would talk if I went to the Hall."
+
+"And why did you wish to see me?" He looked across at my
+companion with despair in his weary eyes, as though his question
+was already answered.
+
+"Yes," said Holmes, answering the look rather than the words. "It
+is so. I know all about McCarthy."
+
+The old man sank his face in his hands. "God help me!" he cried.
+"But I would not have let the young man come to harm. I give you
+my word that I would have spoken out if it went against him at
+the Assizes."
+
+"I am glad to hear you say so," said Holmes gravely.
+
+"I would have spoken now had it not been for my dear girl. It
+would break her heart--it will break her heart when she hears
+that I am arrested."
+
+"It may not come to that," said Holmes.
+
+"What?"
+
+"I am no official agent. I understand that it was your daughter
+who required my presence here, and I am acting in her interests.
+Young McCarthy must be got off, however."
+
+"I am a dying man," said old Turner. "I have had diabetes for
+years. My doctor says it is a question whether I shall live a
+month. Yet I would rather die under my own roof than in a gaol."
+
+Holmes rose and sat down at the table with his pen in his hand
+and a bundle of paper before him. "Just tell us the truth," he
+said. "I shall jot down the facts. You will sign it, and Watson
+here can witness it. Then I could produce your confession at the
+last extremity to save young McCarthy. I promise you that I shall
+not use it unless it is absolutely needed."
+
+"It's as well," said the old man; "it's a question whether I
+shall live to the Assizes, so it matters little to me, but I
+should wish to spare Alice the shock. And now I will make the
+thing clear to you; it has been a long time in the acting, but
+will not take me long to tell.
+
+"You didn't know this dead man, McCarthy. He was a devil
+incarnate. I tell you that. God keep you out of the clutches of
+such a man as he. His grip has been upon me these twenty years,
+and he has blasted my life. I'll tell you first how I came to be
+in his power.
+
+"It was in the early '60's at the diggings. I was a young chap
+then, hot-blooded and reckless, ready to turn my hand at
+anything; I got among bad companions, took to drink, had no luck
+with my claim, took to the bush, and in a word became what you
+would call over here a highway robber. There were six of us, and
+we had a wild, free life of it, sticking up a station from time
+to time, or stopping the wagons on the road to the diggings.
+Black Jack of Ballarat was the name I went under, and our party
+is still remembered in the colony as the Ballarat Gang.
+
+"One day a gold convoy came down from Ballarat to Melbourne, and
+we lay in wait for it and attacked it. There were six troopers
+and six of us, so it was a close thing, but we emptied four of
+their saddles at the first volley. Three of our boys were killed,
+however, before we got the swag. I put my pistol to the head of
+the wagon-driver, who was this very man McCarthy. I wish to the
+Lord that I had shot him then, but I spared him, though I saw his
+wicked little eyes fixed on my face, as though to remember every
+feature. We got away with the gold, became wealthy men, and made
+our way over to England without being suspected. There I parted
+from my old pals and determined to settle down to a quiet and
+respectable life. I bought this estate, which chanced to be in
+the market, and I set myself to do a little good with my money,
+to make up for the way in which I had earned it. I married, too,
+and though my wife died young she left me my dear little Alice.
+Even when she was just a baby her wee hand seemed to lead me down
+the right path as nothing else had ever done. In a word, I turned
+over a new leaf and did my best to make up for the past. All was
+going well when McCarthy laid his grip upon me.
+
+"I had gone up to town about an investment, and I met him in
+Regent Street with hardly a coat to his back or a boot to his
+foot.
+
+"'Here we are, Jack,' says he, touching me on the arm; 'we'll be
+as good as a family to you. There's two of us, me and my son, and
+you can have the keeping of us. If you don't--it's a fine,
+law-abiding country is England, and there's always a policeman
+within hail.'
+
+"Well, down they came to the west country, there was no shaking
+them off, and there they have lived rent free on my best land
+ever since. There was no rest for me, no peace, no forgetfulness;
+turn where I would, there was his cunning, grinning face at my
+elbow. It grew worse as Alice grew up, for he soon saw I was more
+afraid of her knowing my past than of the police. Whatever he
+wanted he must have, and whatever it was I gave him without
+question, land, money, houses, until at last he asked a thing
+which I could not give. He asked for Alice.
+
+"His son, you see, had grown up, and so had my girl, and as I was
+known to be in weak health, it seemed a fine stroke to him that
+his lad should step into the whole property. But there I was
+firm. I would not have his cursed stock mixed with mine; not that
+I had any dislike to the lad, but his blood was in him, and that
+was enough. I stood firm. McCarthy threatened. I braved him to do
+his worst. We were to meet at the pool midway between our houses
+to talk it over.
+
+"When I went down there I found him talking with his son, so I
+smoked a cigar and waited behind a tree until he should be alone.
+But as I listened to his talk all that was black and bitter in
+me seemed to come uppermost. He was urging his son to marry my
+daughter with as little regard for what she might think as if she
+were a slut from off the streets. It drove me mad to think that I
+and all that I held most dear should be in the power of such a
+man as this. Could I not snap the bond? I was already a dying and
+a desperate man. Though clear of mind and fairly strong of limb,
+I knew that my own fate was sealed. But my memory and my girl!
+Both could be saved if I could but silence that foul tongue. I
+did it, Mr. Holmes. I would do it again. Deeply as I have sinned,
+I have led a life of martyrdom to atone for it. But that my girl
+should be entangled in the same meshes which held me was more
+than I could suffer. I struck him down with no more compunction
+than if he had been some foul and venomous beast. His cry brought
+back his son; but I had gained the cover of the wood, though I
+was forced to go back to fetch the cloak which I had dropped in
+my flight. That is the true story, gentlemen, of all that
+occurred."
+
+"Well, it is not for me to judge you," said Holmes as the old man
+signed the statement which had been drawn out. "I pray that we
+may never be exposed to such a temptation."
+
+"I pray not, sir. And what do you intend to do?"
+
+"In view of your health, nothing. You are yourself aware that you
+will soon have to answer for your deed at a higher court than the
+Assizes. I will keep your confession, and if McCarthy is
+condemned I shall be forced to use it. If not, it shall never be
+seen by mortal eye; and your secret, whether you be alive or
+dead, shall be safe with us."
+
+"Farewell, then," said the old man solemnly. "Your own deathbeds,
+when they come, will be the easier for the thought of the peace
+which you have given to mine." Tottering and shaking in all his
+giant frame, he stumbled slowly from the room.
+
+"God help us!" said Holmes after a long silence. "Why does fate
+play such tricks with poor, helpless worms? I never hear of such
+a case as this that I do not think of Baxter's words, and say,
+'There, but for the grace of God, goes Sherlock Holmes.'"
+
+James McCarthy was acquitted at the Assizes on the strength of a
+number of objections which had been drawn out by Holmes and
+submitted to the defending counsel. Old Turner lived for seven
+months after our interview, but he is now dead; and there is
+every prospect that the son and daughter may come to live happily
+together in ignorance of the black cloud which rests upon their
+past.
+
+
+
+ADVENTURE V. THE FIVE ORANGE PIPS
+
+When I glance over my notes and records of the Sherlock Holmes
+cases between the years '82 and '90, I am faced by so many which
+present strange and interesting features that it is no easy
+matter to know which to choose and which to leave. Some, however,
+have already gained publicity through the papers, and others have
+not offered a field for those peculiar qualities which my friend
+possessed in so high a degree, and which it is the object of
+these papers to illustrate. Some, too, have baffled his
+analytical skill, and would be, as narratives, beginnings without
+an ending, while others have been but partially cleared up, and
+have their explanations founded rather upon conjecture and
+surmise than on that absolute logical proof which was so dear to
+him. There is, however, one of these last which was so remarkable
+in its details and so startling in its results that I am tempted
+to give some account of it in spite of the fact that there are
+points in connection with it which never have been, and probably
+never will be, entirely cleared up.
+
+The year '87 furnished us with a long series of cases of greater
+or less interest, of which I retain the records. Among my
+headings under this one twelve months I find an account of the
+adventure of the Paradol Chamber, of the Amateur Mendicant
+Society, who held a luxurious club in the lower vault of a
+furniture warehouse, of the facts connected with the loss of the
+British barque "Sophy Anderson", of the singular adventures of the
+Grice Patersons in the island of Uffa, and finally of the
+Camberwell poisoning case. In the latter, as may be remembered,
+Sherlock Holmes was able, by winding up the dead man's watch, to
+prove that it had been wound up two hours before, and that
+therefore the deceased had gone to bed within that time--a
+deduction which was of the greatest importance in clearing up the
+case. All these I may sketch out at some future date, but none of
+them present such singular features as the strange train of
+circumstances which I have now taken up my pen to describe.
+
+It was in the latter days of September, and the equinoctial gales
+had set in with exceptional violence. All day the wind had
+screamed and the rain had beaten against the windows, so that
+even here in the heart of great, hand-made London we were forced
+to raise our minds for the instant from the routine of life and
+to recognise the presence of those great elemental forces which
+shriek at mankind through the bars of his civilisation, like
+untamed beasts in a cage. As evening drew in, the storm grew
+higher and louder, and the wind cried and sobbed like a child in
+the chimney. Sherlock Holmes sat moodily at one side of the
+fireplace cross-indexing his records of crime, while I at the
+other was deep in one of Clark Russell's fine sea-stories until
+the howl of the gale from without seemed to blend with the text,
+and the splash of the rain to lengthen out into the long swash of
+the sea waves. My wife was on a visit to her mother's, and for a
+few days I was a dweller once more in my old quarters at Baker
+Street.
+
+"Why," said I, glancing up at my companion, "that was surely the
+bell. Who could come to-night? Some friend of yours, perhaps?"
+
+"Except yourself I have none," he answered. "I do not encourage
+visitors."
+
+"A client, then?"
+
+"If so, it is a serious case. Nothing less would bring a man out
+on such a day and at such an hour. But I take it that it is more
+likely to be some crony of the landlady's."
+
+Sherlock Holmes was wrong in his conjecture, however, for there
+came a step in the passage and a tapping at the door. He
+stretched out his long arm to turn the lamp away from himself and
+towards the vacant chair upon which a newcomer must sit.
+
+"Come in!" said he.
+
+The man who entered was young, some two-and-twenty at the
+outside, well-groomed and trimly clad, with something of
+refinement and delicacy in his bearing. The streaming umbrella
+which he held in his hand, and his long shining waterproof told
+of the fierce weather through which he had come. He looked about
+him anxiously in the glare of the lamp, and I could see that his
+face was pale and his eyes heavy, like those of a man who is
+weighed down with some great anxiety.
+
+"I owe you an apology," he said, raising his golden pince-nez to
+his eyes. "I trust that I am not intruding. I fear that I have
+brought some traces of the storm and rain into your snug
+chamber."
+
+"Give me your coat and umbrella," said Holmes. "They may rest
+here on the hook and will be dry presently. You have come up from
+the south-west, I see."
+
+"Yes, from Horsham."
+
+"That clay and chalk mixture which I see upon your toe caps is
+quite distinctive."
+
+"I have come for advice."
+
+"That is easily got."
+
+"And help."
+
+"That is not always so easy."
+
+"I have heard of you, Mr. Holmes. I heard from Major Prendergast
+how you saved him in the Tankerville Club scandal."
+
+"Ah, of course. He was wrongfully accused of cheating at cards."
+
+"He said that you could solve anything."
+
+"He said too much."
+
+"That you are never beaten."
+
+"I have been beaten four times--three times by men, and once by a
+woman."
+
+"But what is that compared with the number of your successes?"
+
+"It is true that I have been generally successful."
+
+"Then you may be so with me."
+
+"I beg that you will draw your chair up to the fire and favour me
+with some details as to your case."
+
+"It is no ordinary one."
+
+"None of those which come to me are. I am the last court of
+appeal."
+
+"And yet I question, sir, whether, in all your experience, you
+have ever listened to a more mysterious and inexplicable chain of
+events than those which have happened in my own family."
+
+"You fill me with interest," said Holmes. "Pray give us the
+essential facts from the commencement, and I can afterwards
+question you as to those details which seem to me to be most
+important."
+
+The young man pulled his chair up and pushed his wet feet out
+towards the blaze.
+
+"My name," said he, "is John Openshaw, but my own affairs have,
+as far as I can understand, little to do with this awful
+business. It is a hereditary matter; so in order to give you an
+idea of the facts, I must go back to the commencement of the
+affair.
+
+"You must know that my grandfather had two sons--my uncle Elias
+and my father Joseph. My father had a small factory at Coventry,
+which he enlarged at the time of the invention of bicycling. He
+was a patentee of the Openshaw unbreakable tire, and his business
+met with such success that he was able to sell it and to retire
+upon a handsome competence.
+
+"My uncle Elias emigrated to America when he was a young man and
+became a planter in Florida, where he was reported to have done
+very well. At the time of the war he fought in Jackson's army,
+and afterwards under Hood, where he rose to be a colonel. When
+Lee laid down his arms my uncle returned to his plantation, where
+he remained for three or four years. About 1869 or 1870 he came
+back to Europe and took a small estate in Sussex, near Horsham.
+He had made a very considerable fortune in the States, and his
+reason for leaving them was his aversion to the negroes, and his
+dislike of the Republican policy in extending the franchise to
+them. He was a singular man, fierce and quick-tempered, very
+foul-mouthed when he was angry, and of a most retiring
+disposition. During all the years that he lived at Horsham, I
+doubt if ever he set foot in the town. He had a garden and two or
+three fields round his house, and there he would take his
+exercise, though very often for weeks on end he would never leave
+his room. He drank a great deal of brandy and smoked very
+heavily, but he would see no society and did not want any
+friends, not even his own brother.
+
+"He didn't mind me; in fact, he took a fancy to me, for at the
+time when he saw me first I was a youngster of twelve or so. This
+would be in the year 1878, after he had been eight or nine years
+in England. He begged my father to let me live with him and he
+was very kind to me in his way. When he was sober he used to be
+fond of playing backgammon and draughts with me, and he would
+make me his representative both with the servants and with the
+tradespeople, so that by the time that I was sixteen I was quite
+master of the house. I kept all the keys and could go where I
+liked and do what I liked, so long as I did not disturb him in
+his privacy. There was one singular exception, however, for he
+had a single room, a lumber-room up among the attics, which was
+invariably locked, and which he would never permit either me or
+anyone else to enter. With a boy's curiosity I have peeped
+through the keyhole, but I was never able to see more than such a
+collection of old trunks and bundles as would be expected in such
+a room.
+
+"One day--it was in March, 1883--a letter with a foreign stamp
+lay upon the table in front of the colonel's plate. It was not a
+common thing for him to receive letters, for his bills were all
+paid in ready money, and he had no friends of any sort. 'From
+India!' said he as he took it up, 'Pondicherry postmark! What can
+this be?' Opening it hurriedly, out there jumped five little
+dried orange pips, which pattered down upon his plate. I began to
+laugh at this, but the laugh was struck from my lips at the sight
+of his face. His lip had fallen, his eyes were protruding, his
+skin the colour of putty, and he glared at the envelope which he
+still held in his trembling hand, 'K. K. K.!' he shrieked, and
+then, 'My God, my God, my sins have overtaken me!'
+
+"'What is it, uncle?' I cried.
+
+"'Death,' said he, and rising from the table he retired to his
+room, leaving me palpitating with horror. I took up the envelope
+and saw scrawled in red ink upon the inner flap, just above the
+gum, the letter K three times repeated. There was nothing else
+save the five dried pips. What could be the reason of his
+overpowering terror? I left the breakfast-table, and as I
+ascended the stair I met him coming down with an old rusty key,
+which must have belonged to the attic, in one hand, and a small
+brass box, like a cashbox, in the other.
+
+"'They may do what they like, but I'll checkmate them still,'
+said he with an oath. 'Tell Mary that I shall want a fire in my
+room to-day, and send down to Fordham, the Horsham lawyer.'
+
+"I did as he ordered, and when the lawyer arrived I was asked to
+step up to the room. The fire was burning brightly, and in the
+grate there was a mass of black, fluffy ashes, as of burned
+paper, while the brass box stood open and empty beside it. As I
+glanced at the box I noticed, with a start, that upon the lid was
+printed the treble K which I had read in the morning upon the
+envelope.
+
+"'I wish you, John,' said my uncle, 'to witness my will. I leave
+my estate, with all its advantages and all its disadvantages, to
+my brother, your father, whence it will, no doubt, descend to
+you. If you can enjoy it in peace, well and good! If you find you
+cannot, take my advice, my boy, and leave it to your deadliest
+enemy. I am sorry to give you such a two-edged thing, but I can't
+say what turn things are going to take. Kindly sign the paper
+where Mr. Fordham shows you.'
+
+"I signed the paper as directed, and the lawyer took it away with
+him. The singular incident made, as you may think, the deepest
+impression upon me, and I pondered over it and turned it every
+way in my mind without being able to make anything of it. Yet I
+could not shake off the vague feeling of dread which it left
+behind, though the sensation grew less keen as the weeks passed
+and nothing happened to disturb the usual routine of our lives. I
+could see a change in my uncle, however. He drank more than ever,
+and he was less inclined for any sort of society. Most of his
+time he would spend in his room, with the door locked upon the
+inside, but sometimes he would emerge in a sort of drunken frenzy
+and would burst out of the house and tear about the garden with a
+revolver in his hand, screaming out that he was afraid of no man,
+and that he was not to be cooped up, like a sheep in a pen, by
+man or devil. When these hot fits were over, however, he would
+rush tumultuously in at the door and lock and bar it behind him,
+like a man who can brazen it out no longer against the terror
+which lies at the roots of his soul. At such times I have seen
+his face, even on a cold day, glisten with moisture, as though it
+were new raised from a basin.
+
+"Well, to come to an end of the matter, Mr. Holmes, and not to
+abuse your patience, there came a night when he made one of those
+drunken sallies from which he never came back. We found him, when
+we went to search for him, face downward in a little
+green-scummed pool, which lay at the foot of the garden. There
+was no sign of any violence, and the water was but two feet deep,
+so that the jury, having regard to his known eccentricity,
+brought in a verdict of 'suicide.' But I, who knew how he winced
+from the very thought of death, had much ado to persuade myself
+that he had gone out of his way to meet it. The matter passed,
+however, and my father entered into possession of the estate, and
+of some 14,000 pounds, which lay to his credit at the bank."
+
+"One moment," Holmes interposed, "your statement is, I foresee,
+one of the most remarkable to which I have ever listened. Let me
+have the date of the reception by your uncle of the letter, and
+the date of his supposed suicide."
+
+"The letter arrived on March 10, 1883. His death was seven weeks
+later, upon the night of May 2nd."
+
+"Thank you. Pray proceed."
+
+"When my father took over the Horsham property, he, at my
+request, made a careful examination of the attic, which had been
+always locked up. We found the brass box there, although its
+contents had been destroyed. On the inside of the cover was a
+paper label, with the initials of K. K. K. repeated upon it, and
+'Letters, memoranda, receipts, and a register' written beneath.
+These, we presume, indicated the nature of the papers which had
+been destroyed by Colonel Openshaw. For the rest, there was
+nothing of much importance in the attic save a great many
+scattered papers and note-books bearing upon my uncle's life in
+America. Some of them were of the war time and showed that he had
+done his duty well and had borne the repute of a brave soldier.
+Others were of a date during the reconstruction of the Southern
+states, and were mostly concerned with politics, for he had
+evidently taken a strong part in opposing the carpet-bag
+politicians who had been sent down from the North.
+
+"Well, it was the beginning of '84 when my father came to live at
+Horsham, and all went as well as possible with us until the
+January of '85. On the fourth day after the new year I heard my
+father give a sharp cry of surprise as we sat together at the
+breakfast-table. There he was, sitting with a newly opened
+envelope in one hand and five dried orange pips in the
+outstretched palm of the other one. He had always laughed at what
+he called my cock-and-bull story about the colonel, but he looked
+very scared and puzzled now that the same thing had come upon
+himself.
+
+"'Why, what on earth does this mean, John?' he stammered.
+
+"My heart had turned to lead. 'It is K. K. K.,' said I.
+
+"He looked inside the envelope. 'So it is,' he cried. 'Here are
+the very letters. But what is this written above them?'
+
+"'Put the papers on the sundial,' I read, peeping over his
+shoulder.
+
+"'What papers? What sundial?' he asked.
+
+"'The sundial in the garden. There is no other,' said I; 'but the
+papers must be those that are destroyed.'
+
+"'Pooh!' said he, gripping hard at his courage. 'We are in a
+civilised land here, and we can't have tomfoolery of this kind.
+Where does the thing come from?'
+
+"'From Dundee,' I answered, glancing at the postmark.
+
+"'Some preposterous practical joke,' said he. 'What have I to do
+with sundials and papers? I shall take no notice of such
+nonsense.'
+
+"'I should certainly speak to the police,' I said.
+
+"'And be laughed at for my pains. Nothing of the sort.'
+
+"'Then let me do so?'
+
+"'No, I forbid you. I won't have a fuss made about such
+nonsense.'
+
+"It was in vain to argue with him, for he was a very obstinate
+man. I went about, however, with a heart which was full of
+forebodings.
+
+"On the third day after the coming of the letter my father went
+from home to visit an old friend of his, Major Freebody, who is
+in command of one of the forts upon Portsdown Hill. I was glad
+that he should go, for it seemed to me that he was farther from
+danger when he was away from home. In that, however, I was in
+error. Upon the second day of his absence I received a telegram
+from the major, imploring me to come at once. My father had
+fallen over one of the deep chalk-pits which abound in the
+neighbourhood, and was lying senseless, with a shattered skull. I
+hurried to him, but he passed away without having ever recovered
+his consciousness. He had, as it appears, been returning from
+Fareham in the twilight, and as the country was unknown to him,
+and the chalk-pit unfenced, the jury had no hesitation in
+bringing in a verdict of 'death from accidental causes.'
+Carefully as I examined every fact connected with his death, I
+was unable to find anything which could suggest the idea of
+murder. There were no signs of violence, no footmarks, no
+robbery, no record of strangers having been seen upon the roads.
+And yet I need not tell you that my mind was far from at ease,
+and that I was well-nigh certain that some foul plot had been
+woven round him.
+
+"In this sinister way I came into my inheritance. You will ask me
+why I did not dispose of it? I answer, because I was well
+convinced that our troubles were in some way dependent upon an
+incident in my uncle's life, and that the danger would be as
+pressing in one house as in another.
+
+"It was in January, '85, that my poor father met his end, and two
+years and eight months have elapsed since then. During that time
+I have lived happily at Horsham, and I had begun to hope that
+this curse had passed away from the family, and that it had ended
+with the last generation. I had begun to take comfort too soon,
+however; yesterday morning the blow fell in the very shape in
+which it had come upon my father."
+
+The young man took from his waistcoat a crumpled envelope, and
+turning to the table he shook out upon it five little dried
+orange pips.
+
+"This is the envelope," he continued. "The postmark is
+London--eastern division. Within are the very words which were
+upon my father's last message: 'K. K. K.'; and then 'Put the
+papers on the sundial.'"
+
+"What have you done?" asked Holmes.
+
+"Nothing."
+
+"Nothing?"
+
+"To tell the truth"--he sank his face into his thin, white
+hands--"I have felt helpless. I have felt like one of those poor
+rabbits when the snake is writhing towards it. I seem to be in
+the grasp of some resistless, inexorable evil, which no foresight
+and no precautions can guard against."
+
+"Tut! tut!" cried Sherlock Holmes. "You must act, man, or you are
+lost. Nothing but energy can save you. This is no time for
+despair."
+
+"I have seen the police."
+
+"Ah!"
+
+"But they listened to my story with a smile. I am convinced that
+the inspector has formed the opinion that the letters are all
+practical jokes, and that the deaths of my relations were really
+accidents, as the jury stated, and were not to be connected with
+the warnings."
+
+Holmes shook his clenched hands in the air. "Incredible
+imbecility!" he cried.
+
+"They have, however, allowed me a policeman, who may remain in
+the house with me."
+
+"Has he come with you to-night?"
+
+"No. His orders were to stay in the house."
+
+Again Holmes raved in the air.
+
+"Why did you come to me," he cried, "and, above all, why did you
+not come at once?"
+
+"I did not know. It was only to-day that I spoke to Major
+Prendergast about my troubles and was advised by him to come to
+you."
+
+"It is really two days since you had the letter. We should have
+acted before this. You have no further evidence, I suppose, than
+that which you have placed before us--no suggestive detail which
+might help us?"
+
+"There is one thing," said John Openshaw. He rummaged in his coat
+pocket, and, drawing out a piece of discoloured, blue-tinted
+paper, he laid it out upon the table. "I have some remembrance,"
+said he, "that on the day when my uncle burned the papers I
+observed that the small, unburned margins which lay amid the
+ashes were of this particular colour. I found this single sheet
+upon the floor of his room, and I am inclined to think that it
+may be one of the papers which has, perhaps, fluttered out from
+among the others, and in that way has escaped destruction. Beyond
+the mention of pips, I do not see that it helps us much. I think
+myself that it is a page from some private diary. The writing is
+undoubtedly my uncle's."
+
+Holmes moved the lamp, and we both bent over the sheet of paper,
+which showed by its ragged edge that it had indeed been torn from
+a book. It was headed, "March, 1869," and beneath were the
+following enigmatical notices:
+
+"4th. Hudson came. Same old platform.
+
+"7th. Set the pips on McCauley, Paramore, and
+      John Swain, of St. Augustine.
+
+"9th. McCauley cleared.
+
+"10th. John Swain cleared.
+
+"12th. Visited Paramore. All well."
+
+"Thank you!" said Holmes, folding up the paper and returning it
+to our visitor. "And now you must on no account lose another
+instant. We cannot spare time even to discuss what you have told
+me. You must get home instantly and act."
+
+"What shall I do?"
+
+"There is but one thing to do. It must be done at once. You must
+put this piece of paper which you have shown us into the brass
+box which you have described. You must also put in a note to say
+that all the other papers were burned by your uncle, and that
+this is the only one which remains. You must assert that in such
+words as will carry conviction with them. Having done this, you
+must at once put the box out upon the sundial, as directed. Do
+you understand?"
+
+"Entirely."
+
+"Do not think of revenge, or anything of the sort, at present. I
+think that we may gain that by means of the law; but we have our
+web to weave, while theirs is already woven. The first
+consideration is to remove the pressing danger which threatens
+you. The second is to clear up the mystery and to punish the
+guilty parties."
+
+"I thank you," said the young man, rising and pulling on his
+overcoat. "You have given me fresh life and hope. I shall
+certainly do as you advise."
+
+"Do not lose an instant. And, above all, take care of yourself in
+the meanwhile, for I do not think that there can be a doubt that
+you are threatened by a very real and imminent danger. How do you
+go back?"
+
+"By train from Waterloo."
+
+"It is not yet nine. The streets will be crowded, so I trust that
+you may be in safety. And yet you cannot guard yourself too
+closely."
+
+"I am armed."
+
+"That is well. To-morrow I shall set to work upon your case."
+
+"I shall see you at Horsham, then?"
+
+"No, your secret lies in London. It is there that I shall seek
+it."
+
+"Then I shall call upon you in a day, or in two days, with news
+as to the box and the papers. I shall take your advice in every
+particular." He shook hands with us and took his leave. Outside
+the wind still screamed and the rain splashed and pattered
+against the windows. This strange, wild story seemed to have come
+to us from amid the mad elements--blown in upon us like a sheet
+of sea-weed in a gale--and now to have been reabsorbed by them
+once more.
+
+Sherlock Holmes sat for some time in silence, with his head sunk
+forward and his eyes bent upon the red glow of the fire. Then he
+lit his pipe, and leaning back in his chair he watched the blue
+smoke-rings as they chased each other up to the ceiling.
+
+"I think, Watson," he remarked at last, "that of all our cases we
+have had none more fantastic than this."
+
+"Save, perhaps, the Sign of Four."
+
+"Well, yes. Save, perhaps, that. And yet this John Openshaw seems
+to me to be walking amid even greater perils than did the
+Sholtos."
+
+"But have you," I asked, "formed any definite conception as to
+what these perils are?"
+
+"There can be no question as to their nature," he answered.
+
+"Then what are they? Who is this K. K. K., and why does he pursue
+this unhappy family?"
+
+Sherlock Holmes closed his eyes and placed his elbows upon the
+arms of his chair, with his finger-tips together. "The ideal
+reasoner," he remarked, "would, when he had once been shown a
+single fact in all its bearings, deduce from it not only all the
+chain of events which led up to it but also all the results which
+would follow from it. As Cuvier could correctly describe a whole
+animal by the contemplation of a single bone, so the observer who
+has thoroughly understood one link in a series of incidents
+should be able to accurately state all the other ones, both
+before and after. We have not yet grasped the results which the
+reason alone can attain to. Problems may be solved in the study
+which have baffled all those who have sought a solution by the
+aid of their senses. To carry the art, however, to its highest
+pitch, it is necessary that the reasoner should be able to
+utilise all the facts which have come to his knowledge; and this
+in itself implies, as you will readily see, a possession of all
+knowledge, which, even in these days of free education and
+encyclopaedias, is a somewhat rare accomplishment. It is not so
+impossible, however, that a man should possess all knowledge
+which is likely to be useful to him in his work, and this I have
+endeavoured in my case to do. If I remember rightly, you on one
+occasion, in the early days of our friendship, defined my limits
+in a very precise fashion."
+
+"Yes," I answered, laughing. "It was a singular document.
+Philosophy, astronomy, and politics were marked at zero, I
+remember. Botany variable, geology profound as regards the
+mud-stains from any region within fifty miles of town, chemistry
+eccentric, anatomy unsystematic, sensational literature and crime
+records unique, violin-player, boxer, swordsman, lawyer, and
+self-poisoner by cocaine and tobacco. Those, I think, were the
+main points of my analysis."
+
+Holmes grinned at the last item. "Well," he said, "I say now, as
+I said then, that a man should keep his little brain-attic
+stocked with all the furniture that he is likely to use, and the
+rest he can put away in the lumber-room of his library, where he
+can get it if he wants it. Now, for such a case as the one which
+has been submitted to us to-night, we need certainly to muster
+all our resources. Kindly hand me down the letter K of the
+'American Encyclopaedia' which stands upon the shelf beside you.
+Thank you. Now let us consider the situation and see what may be
+deduced from it. In the first place, we may start with a strong
+presumption that Colonel Openshaw had some very strong reason for
+leaving America. Men at his time of life do not change all their
+habits and exchange willingly the charming climate of Florida for
+the lonely life of an English provincial town. His extreme love
+of solitude in England suggests the idea that he was in fear of
+someone or something, so we may assume as a working hypothesis
+that it was fear of someone or something which drove him from
+America. As to what it was he feared, we can only deduce that by
+considering the formidable letters which were received by himself
+and his successors. Did you remark the postmarks of those
+letters?"
+
+"The first was from Pondicherry, the second from Dundee, and the
+third from London."
+
+"From East London. What do you deduce from that?"
+
+"They are all seaports. That the writer was on board of a ship."
+
+"Excellent. We have already a clue. There can be no doubt that
+the probability--the strong probability--is that the writer was
+on board of a ship. And now let us consider another point. In the
+case of Pondicherry, seven weeks elapsed between the threat and
+its fulfilment, in Dundee it was only some three or four days.
+Does that suggest anything?"
+
+"A greater distance to travel."
+
+"But the letter had also a greater distance to come."
+
+"Then I do not see the point."
+
+"There is at least a presumption that the vessel in which the man
+or men are is a sailing-ship. It looks as if they always send
+their singular warning or token before them when starting upon
+their mission. You see how quickly the deed followed the sign
+when it came from Dundee. If they had come from Pondicherry in a
+steamer they would have arrived almost as soon as their letter.
+But, as a matter of fact, seven weeks elapsed. I think that those
+seven weeks represented the difference between the mail-boat which
+brought the letter and the sailing vessel which brought the
+writer."
+
+"It is possible."
+
+"More than that. It is probable. And now you see the deadly
+urgency of this new case, and why I urged young Openshaw to
+caution. The blow has always fallen at the end of the time which
+it would take the senders to travel the distance. But this one
+comes from London, and therefore we cannot count upon delay."
+
+"Good God!" I cried. "What can it mean, this relentless
+persecution?"
+
+"The papers which Openshaw carried are obviously of vital
+importance to the person or persons in the sailing-ship. I think
+that it is quite clear that there must be more than one of them.
+A single man could not have carried out two deaths in such a way
+as to deceive a coroner's jury. There must have been several in
+it, and they must have been men of resource and determination.
+Their papers they mean to have, be the holder of them who it may.
+In this way you see K. K. K. ceases to be the initials of an
+individual and becomes the badge of a society."
+
+"But of what society?"
+
+"Have you never--" said Sherlock Holmes, bending forward and
+sinking his voice--"have you never heard of the Ku Klux Klan?"
+
+"I never have."
+
+Holmes turned over the leaves of the book upon his knee. "Here it
+is," said he presently:
+
+"'Ku Klux Klan. A name derived from the fanciful resemblance to
+the sound produced by cocking a rifle. This terrible secret
+society was formed by some ex-Confederate soldiers in the
+Southern states after the Civil War, and it rapidly formed local
+branches in different parts of the country, notably in Tennessee,
+Louisiana, the Carolinas, Georgia, and Florida. Its power was
+used for political purposes, principally for the terrorising of
+the negro voters and the murdering and driving from the country
+of those who were opposed to its views. Its outrages were usually
+preceded by a warning sent to the marked man in some fantastic
+but generally recognised shape--a sprig of oak-leaves in some
+parts, melon seeds or orange pips in others. On receiving this
+the victim might either openly abjure his former ways, or might
+fly from the country. If he braved the matter out, death would
+unfailingly come upon him, and usually in some strange and
+unforeseen manner. So perfect was the organisation of the
+society, and so systematic its methods, that there is hardly a
+case upon record where any man succeeded in braving it with
+impunity, or in which any of its outrages were traced home to the
+perpetrators. For some years the organisation flourished in spite
+of the efforts of the United States government and of the better
+classes of the community in the South. Eventually, in the year
+1869, the movement rather suddenly collapsed, although there have
+been sporadic outbreaks of the same sort since that date.'
+
+"You will observe," said Holmes, laying down the volume, "that
+the sudden breaking up of the society was coincident with the
+disappearance of Openshaw from America with their papers. It may
+well have been cause and effect. It is no wonder that he and his
+family have some of the more implacable spirits upon their track.
+You can understand that this register and diary may implicate
+some of the first men in the South, and that there may be many
+who will not sleep easy at night until it is recovered."
+
+"Then the page we have seen--"
+
+"Is such as we might expect. It ran, if I remember right, 'sent
+the pips to A, B, and C'--that is, sent the society's warning to
+them. Then there are successive entries that A and B cleared, or
+left the country, and finally that C was visited, with, I fear, a
+sinister result for C. Well, I think, Doctor, that we may let
+some light into this dark place, and I believe that the only
+chance young Openshaw has in the meantime is to do what I have
+told him. There is nothing more to be said or to be done
+to-night, so hand me over my violin and let us try to forget for
+half an hour the miserable weather and the still more miserable
+ways of our fellow-men."
+
+
+It had cleared in the morning, and the sun was shining with a
+subdued brightness through the dim veil which hangs over the
+great city. Sherlock Holmes was already at breakfast when I came
+down.
+
+"You will excuse me for not waiting for you," said he; "I have, I
+foresee, a very busy day before me in looking into this case of
+young Openshaw's."
+
+"What steps will you take?" I asked.
+
+"It will very much depend upon the results of my first inquiries.
+I may have to go down to Horsham, after all."
+
+"You will not go there first?"
+
+"No, I shall commence with the City. Just ring the bell and the
+maid will bring up your coffee."
+
+As I waited, I lifted the unopened newspaper from the table and
+glanced my eye over it. It rested upon a heading which sent a
+chill to my heart.
+
+"Holmes," I cried, "you are too late."
+
+"Ah!" said he, laying down his cup, "I feared as much. How was it
+done?" He spoke calmly, but I could see that he was deeply moved.
+
+"My eye caught the name of Openshaw, and the heading 'Tragedy
+Near Waterloo Bridge.' Here is the account:
+
+"Between nine and ten last night Police-Constable Cook, of the H
+Division, on duty near Waterloo Bridge, heard a cry for help and
+a splash in the water. The night, however, was extremely dark and
+stormy, so that, in spite of the help of several passers-by, it
+was quite impossible to effect a rescue. The alarm, however, was
+given, and, by the aid of the water-police, the body was
+eventually recovered. It proved to be that of a young gentleman
+whose name, as it appears from an envelope which was found in his
+pocket, was John Openshaw, and whose residence is near Horsham.
+It is conjectured that he may have been hurrying down to catch
+the last train from Waterloo Station, and that in his haste and
+the extreme darkness he missed his path and walked over the edge
+of one of the small landing-places for river steamboats. The body
+exhibited no traces of violence, and there can be no doubt that
+the deceased had been the victim of an unfortunate accident,
+which should have the effect of calling the attention of the
+authorities to the condition of the riverside landing-stages."
+
+We sat in silence for some minutes, Holmes more depressed and
+shaken than I had ever seen him.
+
+"That hurts my pride, Watson," he said at last. "It is a petty
+feeling, no doubt, but it hurts my pride. It becomes a personal
+matter with me now, and, if God sends me health, I shall set my
+hand upon this gang. That he should come to me for help, and that
+I should send him away to his death--!" He sprang from his chair
+and paced about the room in uncontrollable agitation, with a
+flush upon his sallow cheeks and a nervous clasping and
+unclasping of his long thin hands.
+
+"They must be cunning devils," he exclaimed at last. "How could
+they have decoyed him down there? The Embankment is not on the
+direct line to the station. The bridge, no doubt, was too
+crowded, even on such a night, for their purpose. Well, Watson,
+we shall see who will win in the long run. I am going out now!"
+
+"To the police?"
+
+"No; I shall be my own police. When I have spun the web they may
+take the flies, but not before."
+
+All day I was engaged in my professional work, and it was late in
+the evening before I returned to Baker Street. Sherlock Holmes
+had not come back yet. It was nearly ten o'clock before he
+entered, looking pale and worn. He walked up to the sideboard,
+and tearing a piece from the loaf he devoured it voraciously,
+washing it down with a long draught of water.
+
+"You are hungry," I remarked.
+
+"Starving. It had escaped my memory. I have had nothing since
+breakfast."
+
+"Nothing?"
+
+"Not a bite. I had no time to think of it."
+
+"And how have you succeeded?"
+
+"Well."
+
+"You have a clue?"
+
+"I have them in the hollow of my hand. Young Openshaw shall not
+long remain unavenged. Why, Watson, let us put their own devilish
+trade-mark upon them. It is well thought of!"
+
+"What do you mean?"
+
+He took an orange from the cupboard, and tearing it to pieces he
+squeezed out the pips upon the table. Of these he took five and
+thrust them into an envelope. On the inside of the flap he wrote
+"S. H. for J. O." Then he sealed it and addressed it to "Captain
+James Calhoun, Barque 'Lone Star,' Savannah, Georgia."
+
+"That will await him when he enters port," said he, chuckling.
+"It may give him a sleepless night. He will find it as sure a
+precursor of his fate as Openshaw did before him."
+
+"And who is this Captain Calhoun?"
+
+"The leader of the gang. I shall have the others, but he first."
+
+"How did you trace it, then?"
+
+He took a large sheet of paper from his pocket, all covered with
+dates and names.
+
+"I have spent the whole day," said he, "over Lloyd's registers
+and files of the old papers, following the future career of every
+vessel which touched at Pondicherry in January and February in
+'83. There were thirty-six ships of fair tonnage which were
+reported there during those months. Of these, one, the 'Lone Star,'
+instantly attracted my attention, since, although it was reported
+as having cleared from London, the name is that which is given to
+one of the states of the Union."
+
+"Texas, I think."
+
+"I was not and am not sure which; but I knew that the ship must
+have an American origin."
+
+"What then?"
+
+"I searched the Dundee records, and when I found that the barque
+'Lone Star' was there in January, '85, my suspicion became a
+certainty. I then inquired as to the vessels which lay at present
+in the port of London."
+
+"Yes?"
+
+"The 'Lone Star' had arrived here last week. I went down to the
+Albert Dock and found that she had been taken down the river by
+the early tide this morning, homeward bound to Savannah. I wired
+to Gravesend and learned that she had passed some time ago, and
+as the wind is easterly I have no doubt that she is now past the
+Goodwins and not very far from the Isle of Wight."
+
+"What will you do, then?"
+
+"Oh, I have my hand upon him. He and the two mates, are as I
+learn, the only native-born Americans in the ship. The others are
+Finns and Germans. I know, also, that they were all three away
+from the ship last night. I had it from the stevedore who has
+been loading their cargo. By the time that their sailing-ship
+reaches Savannah the mail-boat will have carried this letter, and
+the cable will have informed the police of Savannah that these
+three gentlemen are badly wanted here upon a charge of murder."
+
+There is ever a flaw, however, in the best laid of human plans,
+and the murderers of John Openshaw were never to receive the
+orange pips which would show them that another, as cunning and as
+resolute as themselves, was upon their track. Very long and very
+severe were the equinoctial gales that year. We waited long for
+news of the "Lone Star" of Savannah, but none ever reached us. We
+did at last hear that somewhere far out in the Atlantic a
+shattered stern-post of a boat was seen swinging in the trough
+of a wave, with the letters "L. S." carved upon it, and that is
+all which we shall ever know of the fate of the "Lone Star."
+
+
+
+ADVENTURE VI. THE MAN WITH THE TWISTED LIP
+
+Isa Whitney, brother of the late Elias Whitney, D.D., Principal
+of the Theological College of St. George's, was much addicted to
+opium. The habit grew upon him, as I understand, from some
+foolish freak when he was at college; for having read De
+Quincey's description of his dreams and sensations, he had
+drenched his tobacco with laudanum in an attempt to produce the
+same effects. He found, as so many more have done, that the
+practice is easier to attain than to get rid of, and for many
+years he continued to be a slave to the drug, an object of
+mingled horror and pity to his friends and relatives. I can see
+him now, with yellow, pasty face, drooping lids, and pin-point
+pupils, all huddled in a chair, the wreck and ruin of a noble
+man.
+
+One night--it was in June, '89--there came a ring to my bell,
+about the hour when a man gives his first yawn and glances at the
+clock. I sat up in my chair, and my wife laid her needle-work
+down in her lap and made a little face of disappointment.
+
+"A patient!" said she. "You'll have to go out."
+
+I groaned, for I was newly come back from a weary day.
+
+We heard the door open, a few hurried words, and then quick steps
+upon the linoleum. Our own door flew open, and a lady, clad in
+some dark-coloured stuff, with a black veil, entered the room.
+
+"You will excuse my calling so late," she began, and then,
+suddenly losing her self-control, she ran forward, threw her arms
+about my wife's neck, and sobbed upon her shoulder. "Oh, I'm in
+such trouble!" she cried; "I do so want a little help."
+
+"Why," said my wife, pulling up her veil, "it is Kate Whitney.
+How you startled me, Kate! I had not an idea who you were when
+you came in."
+
+"I didn't know what to do, so I came straight to you." That was
+always the way. Folk who were in grief came to my wife like birds
+to a light-house.
+
+"It was very sweet of you to come. Now, you must have some wine
+and water, and sit here comfortably and tell us all about it. Or
+should you rather that I sent James off to bed?"
+
+"Oh, no, no! I want the doctor's advice and help, too. It's about
+Isa. He has not been home for two days. I am so frightened about
+him!"
+
+It was not the first time that she had spoken to us of her
+husband's trouble, to me as a doctor, to my wife as an old friend
+and school companion. We soothed and comforted her by such words
+as we could find. Did she know where her husband was? Was it
+possible that we could bring him back to her?
+
+It seems that it was. She had the surest information that of late
+he had, when the fit was on him, made use of an opium den in the
+farthest east of the City. Hitherto his orgies had always been
+confined to one day, and he had come back, twitching and
+shattered, in the evening. But now the spell had been upon him
+eight-and-forty hours, and he lay there, doubtless among the
+dregs of the docks, breathing in the poison or sleeping off the
+effects. There he was to be found, she was sure of it, at the Bar
+of Gold, in Upper Swandam Lane. But what was she to do? How could
+she, a young and timid woman, make her way into such a place and
+pluck her husband out from among the ruffians who surrounded him?
+
+There was the case, and of course there was but one way out of
+it. Might I not escort her to this place? And then, as a second
+thought, why should she come at all? I was Isa Whitney's medical
+adviser, and as such I had influence over him. I could manage it
+better if I were alone. I promised her on my word that I would
+send him home in a cab within two hours if he were indeed at the
+address which she had given me. And so in ten minutes I had left
+my armchair and cheery sitting-room behind me, and was speeding
+eastward in a hansom on a strange errand, as it seemed to me at
+the time, though the future only could show how strange it was to
+be.
+
+But there was no great difficulty in the first stage of my
+adventure. Upper Swandam Lane is a vile alley lurking behind the
+high wharves which line the north side of the river to the east
+of London Bridge. Between a slop-shop and a gin-shop, approached
+by a steep flight of steps leading down to a black gap like the
+mouth of a cave, I found the den of which I was in search.
+Ordering my cab to wait, I passed down the steps, worn hollow in
+the centre by the ceaseless tread of drunken feet; and by the
+light of a flickering oil-lamp above the door I found the latch
+and made my way into a long, low room, thick and heavy with the
+brown opium smoke, and terraced with wooden berths, like the
+forecastle of an emigrant ship.
+
+Through the gloom one could dimly catch a glimpse of bodies lying
+in strange fantastic poses, bowed shoulders, bent knees, heads
+thrown back, and chins pointing upward, with here and there a
+dark, lack-lustre eye turned upon the newcomer. Out of the black
+shadows there glimmered little red circles of light, now bright,
+now faint, as the burning poison waxed or waned in the bowls of
+the metal pipes. The most lay silent, but some muttered to
+themselves, and others talked together in a strange, low,
+monotonous voice, their conversation coming in gushes, and then
+suddenly tailing off into silence, each mumbling out his own
+thoughts and paying little heed to the words of his neighbour. At
+the farther end was a small brazier of burning charcoal, beside
+which on a three-legged wooden stool there sat a tall, thin old
+man, with his jaw resting upon his two fists, and his elbows upon
+his knees, staring into the fire.
+
+As I entered, a sallow Malay attendant had hurried up with a pipe
+for me and a supply of the drug, beckoning me to an empty berth.
+
+"Thank you. I have not come to stay," said I. "There is a friend
+of mine here, Mr. Isa Whitney, and I wish to speak with him."
+
+There was a movement and an exclamation from my right, and
+peering through the gloom, I saw Whitney, pale, haggard, and
+unkempt, staring out at me.
+
+"My God! It's Watson," said he. He was in a pitiable state of
+reaction, with every nerve in a twitter. "I say, Watson, what
+o'clock is it?"
+
+"Nearly eleven."
+
+"Of what day?"
+
+"Of Friday, June 19th."
+
+"Good heavens! I thought it was Wednesday. It is Wednesday. What
+d'you want to frighten a chap for?" He sank his face onto his
+arms and began to sob in a high treble key.
+
+"I tell you that it is Friday, man. Your wife has been waiting
+this two days for you. You should be ashamed of yourself!"
+
+"So I am. But you've got mixed, Watson, for I have only been here
+a few hours, three pipes, four pipes--I forget how many. But I'll
+go home with you. I wouldn't frighten Kate--poor little Kate.
+Give me your hand! Have you a cab?"
+
+"Yes, I have one waiting."
+
+"Then I shall go in it. But I must owe something. Find what I
+owe, Watson. I am all off colour. I can do nothing for myself."
+
+I walked down the narrow passage between the double row of
+sleepers, holding my breath to keep out the vile, stupefying
+fumes of the drug, and looking about for the manager. As I passed
+the tall man who sat by the brazier I felt a sudden pluck at my
+skirt, and a low voice whispered, "Walk past me, and then look
+back at me." The words fell quite distinctly upon my ear. I
+glanced down. They could only have come from the old man at my
+side, and yet he sat now as absorbed as ever, very thin, very
+wrinkled, bent with age, an opium pipe dangling down from between
+his knees, as though it had dropped in sheer lassitude from his
+fingers. I took two steps forward and looked back. It took all my
+self-control to prevent me from breaking out into a cry of
+astonishment. He had turned his back so that none could see him
+but I. His form had filled out, his wrinkles were gone, the dull
+eyes had regained their fire, and there, sitting by the fire and
+grinning at my surprise, was none other than Sherlock Holmes. He
+made a slight motion to me to approach him, and instantly, as he
+turned his face half round to the company once more, subsided
+into a doddering, loose-lipped senility.
+
+"Holmes!" I whispered, "what on earth are you doing in this den?"
+
+"As low as you can," he answered; "I have excellent ears. If you
+would have the great kindness to get rid of that sottish friend
+of yours I should be exceedingly glad to have a little talk with
+you."
+
+"I have a cab outside."
+
+"Then pray send him home in it. You may safely trust him, for he
+appears to be too limp to get into any mischief. I should
+recommend you also to send a note by the cabman to your wife to
+say that you have thrown in your lot with me. If you will wait
+outside, I shall be with you in five minutes."
+
+It was difficult to refuse any of Sherlock Holmes' requests, for
+they were always so exceedingly definite, and put forward with
+such a quiet air of mastery. I felt, however, that when Whitney
+was once confined in the cab my mission was practically
+accomplished; and for the rest, I could not wish anything better
+than to be associated with my friend in one of those singular
+adventures which were the normal condition of his existence. In a
+few minutes I had written my note, paid Whitney's bill, led him
+out to the cab, and seen him driven through the darkness. In a
+very short time a decrepit figure had emerged from the opium den,
+and I was walking down the street with Sherlock Holmes. For two
+streets he shuffled along with a bent back and an uncertain foot.
+Then, glancing quickly round, he straightened himself out and
+burst into a hearty fit of laughter.
+
+"I suppose, Watson," said he, "that you imagine that I have added
+opium-smoking to cocaine injections, and all the other little
+weaknesses on which you have favoured me with your medical
+views."
+
+"I was certainly surprised to find you there."
+
+"But not more so than I to find you."
+
+"I came to find a friend."
+
+"And I to find an enemy."
+
+"An enemy?"
+
+"Yes; one of my natural enemies, or, shall I say, my natural
+prey. Briefly, Watson, I am in the midst of a very remarkable
+inquiry, and I have hoped to find a clue in the incoherent
+ramblings of these sots, as I have done before now. Had I been
+recognised in that den my life would not have been worth an
+hour's purchase; for I have used it before now for my own
+purposes, and the rascally Lascar who runs it has sworn to have
+vengeance upon me. There is a trap-door at the back of that
+building, near the corner of Paul's Wharf, which could tell some
+strange tales of what has passed through it upon the moonless
+nights."
+
+"What! You do not mean bodies?"
+
+"Ay, bodies, Watson. We should be rich men if we had 1000 pounds
+for every poor devil who has been done to death in that den. It
+is the vilest murder-trap on the whole riverside, and I fear that
+Neville St. Clair has entered it never to leave it more. But our
+trap should be here." He put his two forefingers between his
+teeth and whistled shrilly--a signal which was answered by a
+similar whistle from the distance, followed shortly by the rattle
+of wheels and the clink of horses' hoofs.
+
+"Now, Watson," said Holmes, as a tall dog-cart dashed up through
+the gloom, throwing out two golden tunnels of yellow light from
+its side lanterns. "You'll come with me, won't you?"
+
+"If I can be of use."
+
+"Oh, a trusty comrade is always of use; and a chronicler still
+more so. My room at The Cedars is a double-bedded one."
+
+"The Cedars?"
+
+"Yes; that is Mr. St. Clair's house. I am staying there while I
+conduct the inquiry."
+
+"Where is it, then?"
+
+"Near Lee, in Kent. We have a seven-mile drive before us."
+
+"But I am all in the dark."
+
+"Of course you are. You'll know all about it presently. Jump up
+here. All right, John; we shall not need you. Here's half a
+crown. Look out for me to-morrow, about eleven. Give her her
+head. So long, then!"
+
+He flicked the horse with his whip, and we dashed away through
+the endless succession of sombre and deserted streets, which
+widened gradually, until we were flying across a broad
+balustraded bridge, with the murky river flowing sluggishly
+beneath us. Beyond lay another dull wilderness of bricks and
+mortar, its silence broken only by the heavy, regular footfall of
+the policeman, or the songs and shouts of some belated party of
+revellers. A dull wrack was drifting slowly across the sky, and a
+star or two twinkled dimly here and there through the rifts of
+the clouds. Holmes drove in silence, with his head sunk upon his
+breast, and the air of a man who is lost in thought, while I sat
+beside him, curious to learn what this new quest might be which
+seemed to tax his powers so sorely, and yet afraid to break in
+upon the current of his thoughts. We had driven several miles,
+and were beginning to get to the fringe of the belt of suburban
+villas, when he shook himself, shrugged his shoulders, and lit up
+his pipe with the air of a man who has satisfied himself that he
+is acting for the best.
+
+"You have a grand gift of silence, Watson," said he. "It makes
+you quite invaluable as a companion. 'Pon my word, it is a great
+thing for me to have someone to talk to, for my own thoughts are
+not over-pleasant. I was wondering what I should say to this dear
+little woman to-night when she meets me at the door."
+
+"You forget that I know nothing about it."
+
+"I shall just have time to tell you the facts of the case before
+we get to Lee. It seems absurdly simple, and yet, somehow I can
+get nothing to go upon. There's plenty of thread, no doubt, but I
+can't get the end of it into my hand. Now, I'll state the case
+clearly and concisely to you, Watson, and maybe you can see a
+spark where all is dark to me."
+
+"Proceed, then."
+
+"Some years ago--to be definite, in May, 1884--there came to Lee
+a gentleman, Neville St. Clair by name, who appeared to have
+plenty of money. He took a large villa, laid out the grounds very
+nicely, and lived generally in good style. By degrees he made
+friends in the neighbourhood, and in 1887 he married the daughter
+of a local brewer, by whom he now has two children. He had no
+occupation, but was interested in several companies and went into
+town as a rule in the morning, returning by the 5:14 from Cannon
+Street every night. Mr. St. Clair is now thirty-seven years of
+age, is a man of temperate habits, a good husband, a very
+affectionate father, and a man who is popular with all who know
+him. I may add that his whole debts at the present moment, as far
+as we have been able to ascertain, amount to 88 pounds 10s., while
+he has 220 pounds standing to his credit in the Capital and
+Counties Bank. There is no reason, therefore, to think that money
+troubles have been weighing upon his mind.
+
+"Last Monday Mr. Neville St. Clair went into town rather earlier
+than usual, remarking before he started that he had two important
+commissions to perform, and that he would bring his little boy
+home a box of bricks. Now, by the merest chance, his wife
+received a telegram upon this same Monday, very shortly after his
+departure, to the effect that a small parcel of considerable
+value which she had been expecting was waiting for her at the
+offices of the Aberdeen Shipping Company. Now, if you are well up
+in your London, you will know that the office of the company is
+in Fresno Street, which branches out of Upper Swandam Lane, where
+you found me to-night. Mrs. St. Clair had her lunch, started for
+the City, did some shopping, proceeded to the company's office,
+got her packet, and found herself at exactly 4:35 walking through
+Swandam Lane on her way back to the station. Have you followed me
+so far?"
+
+"It is very clear."
+
+"If you remember, Monday was an exceedingly hot day, and Mrs. St.
+Clair walked slowly, glancing about in the hope of seeing a cab,
+as she did not like the neighbourhood in which she found herself.
+While she was walking in this way down Swandam Lane, she suddenly
+heard an ejaculation or cry, and was struck cold to see her
+husband looking down at her and, as it seemed to her, beckoning
+to her from a second-floor window. The window was open, and she
+distinctly saw his face, which she describes as being terribly
+agitated. He waved his hands frantically to her, and then
+vanished from the window so suddenly that it seemed to her that
+he had been plucked back by some irresistible force from behind.
+One singular point which struck her quick feminine eye was that
+although he wore some dark coat, such as he had started to town
+in, he had on neither collar nor necktie.
+
+"Convinced that something was amiss with him, she rushed down the
+steps--for the house was none other than the opium den in which
+you found me to-night--and running through the front room she
+attempted to ascend the stairs which led to the first floor. At
+the foot of the stairs, however, she met this Lascar scoundrel of
+whom I have spoken, who thrust her back and, aided by a Dane, who
+acts as assistant there, pushed her out into the street. Filled
+with the most maddening doubts and fears, she rushed down the
+lane and, by rare good-fortune, met in Fresno Street a number of
+constables with an inspector, all on their way to their beat. The
+inspector and two men accompanied her back, and in spite of the
+continued resistance of the proprietor, they made their way to
+the room in which Mr. St. Clair had last been seen. There was no
+sign of him there. In fact, in the whole of that floor there was
+no one to be found save a crippled wretch of hideous aspect, who,
+it seems, made his home there. Both he and the Lascar stoutly
+swore that no one else had been in the front room during the
+afternoon. So determined was their denial that the inspector was
+staggered, and had almost come to believe that Mrs. St. Clair had
+been deluded when, with a cry, she sprang at a small deal box
+which lay upon the table and tore the lid from it. Out there fell
+a cascade of children's bricks. It was the toy which he had
+promised to bring home.
+
+"This discovery, and the evident confusion which the cripple
+showed, made the inspector realise that the matter was serious.
+The rooms were carefully examined, and results all pointed to an
+abominable crime. The front room was plainly furnished as a
+sitting-room and led into a small bedroom, which looked out upon
+the back of one of the wharves. Between the wharf and the bedroom
+window is a narrow strip, which is dry at low tide but is covered
+at high tide with at least four and a half feet of water. The
+bedroom window was a broad one and opened from below. On
+examination traces of blood were to be seen upon the windowsill,
+and several scattered drops were visible upon the wooden floor of
+the bedroom. Thrust away behind a curtain in the front room were
+all the clothes of Mr. Neville St. Clair, with the exception of
+his coat. His boots, his socks, his hat, and his watch--all were
+there. There were no signs of violence upon any of these
+garments, and there were no other traces of Mr. Neville St.
+Clair. Out of the window he must apparently have gone for no
+other exit could be discovered, and the ominous bloodstains upon
+the sill gave little promise that he could save himself by
+swimming, for the tide was at its very highest at the moment of
+the tragedy.
+
+"And now as to the villains who seemed to be immediately
+implicated in the matter. The Lascar was known to be a man of the
+vilest antecedents, but as, by Mrs. St. Clair's story, he was
+known to have been at the foot of the stair within a very few
+seconds of her husband's appearance at the window, he could
+hardly have been more than an accessory to the crime. His defence
+was one of absolute ignorance, and he protested that he had no
+knowledge as to the doings of Hugh Boone, his lodger, and that he
+could not account in any way for the presence of the missing
+gentleman's clothes.
+
+"So much for the Lascar manager. Now for the sinister cripple who
+lives upon the second floor of the opium den, and who was
+certainly the last human being whose eyes rested upon Neville St.
+Clair. His name is Hugh Boone, and his hideous face is one which
+is familiar to every man who goes much to the City. He is a
+professional beggar, though in order to avoid the police
+regulations he pretends to a small trade in wax vestas. Some
+little distance down Threadneedle Street, upon the left-hand
+side, there is, as you may have remarked, a small angle in the
+wall. Here it is that this creature takes his daily seat,
+cross-legged with his tiny stock of matches on his lap, and as he
+is a piteous spectacle a small rain of charity descends into the
+greasy leather cap which lies upon the pavement beside him. I
+have watched the fellow more than once before ever I thought of
+making his professional acquaintance, and I have been surprised
+at the harvest which he has reaped in a short time. His
+appearance, you see, is so remarkable that no one can pass him
+without observing him. A shock of orange hair, a pale face
+disfigured by a horrible scar, which, by its contraction, has
+turned up the outer edge of his upper lip, a bulldog chin, and a
+pair of very penetrating dark eyes, which present a singular
+contrast to the colour of his hair, all mark him out from amid
+the common crowd of mendicants and so, too, does his wit, for he
+is ever ready with a reply to any piece of chaff which may be
+thrown at him by the passers-by. This is the man whom we now
+learn to have been the lodger at the opium den, and to have been
+the last man to see the gentleman of whom we are in quest."
+
+"But a cripple!" said I. "What could he have done single-handed
+against a man in the prime of life?"
+
+"He is a cripple in the sense that he walks with a limp; but in
+other respects he appears to be a powerful and well-nurtured man.
+Surely your medical experience would tell you, Watson, that
+weakness in one limb is often compensated for by exceptional
+strength in the others."
+
+"Pray continue your narrative."
+
+"Mrs. St. Clair had fainted at the sight of the blood upon the
+window, and she was escorted home in a cab by the police, as her
+presence could be of no help to them in their investigations.
+Inspector Barton, who had charge of the case, made a very careful
+examination of the premises, but without finding anything which
+threw any light upon the matter. One mistake had been made in not
+arresting Boone instantly, as he was allowed some few minutes
+during which he might have communicated with his friend the
+Lascar, but this fault was soon remedied, and he was seized and
+searched, without anything being found which could incriminate
+him. There were, it is true, some blood-stains upon his right
+shirt-sleeve, but he pointed to his ring-finger, which had been
+cut near the nail, and explained that the bleeding came from
+there, adding that he had been to the window not long before, and
+that the stains which had been observed there came doubtless from
+the same source. He denied strenuously having ever seen Mr.
+Neville St. Clair and swore that the presence of the clothes in
+his room was as much a mystery to him as to the police. As to
+Mrs. St. Clair's assertion that she had actually seen her husband
+at the window, he declared that she must have been either mad or
+dreaming. He was removed, loudly protesting, to the
+police-station, while the inspector remained upon the premises in
+the hope that the ebbing tide might afford some fresh clue.
+
+"And it did, though they hardly found upon the mud-bank what they
+had feared to find. It was Neville St. Clair's coat, and not
+Neville St. Clair, which lay uncovered as the tide receded. And
+what do you think they found in the pockets?"
+
+"I cannot imagine."
+
+"No, I don't think you would guess. Every pocket stuffed with
+pennies and half-pennies--421 pennies and 270 half-pennies. It
+was no wonder that it had not been swept away by the tide. But a
+human body is a different matter. There is a fierce eddy between
+the wharf and the house. It seemed likely enough that the
+weighted coat had remained when the stripped body had been sucked
+away into the river."
+
+"But I understand that all the other clothes were found in the
+room. Would the body be dressed in a coat alone?"
+
+"No, sir, but the facts might be met speciously enough. Suppose
+that this man Boone had thrust Neville St. Clair through the
+window, there is no human eye which could have seen the deed.
+What would he do then? It would of course instantly strike him
+that he must get rid of the tell-tale garments. He would seize
+the coat, then, and be in the act of throwing it out, when it
+would occur to him that it would swim and not sink. He has little
+time, for he has heard the scuffle downstairs when the wife tried
+to force her way up, and perhaps he has already heard from his
+Lascar confederate that the police are hurrying up the street.
+There is not an instant to be lost. He rushes to some secret
+hoard, where he has accumulated the fruits of his beggary, and he
+stuffs all the coins upon which he can lay his hands into the
+pockets to make sure of the coat's sinking. He throws it out, and
+would have done the same with the other garments had not he heard
+the rush of steps below, and only just had time to close the
+window when the police appeared."
+
+"It certainly sounds feasible."
+
+"Well, we will take it as a working hypothesis for want of a
+better. Boone, as I have told you, was arrested and taken to the
+station, but it could not be shown that there had ever before
+been anything against him. He had for years been known as a
+professional beggar, but his life appeared to have been a very
+quiet and innocent one. There the matter stands at present, and
+the questions which have to be solved--what Neville St. Clair was
+doing in the opium den, what happened to him when there, where is
+he now, and what Hugh Boone had to do with his disappearance--are
+all as far from a solution as ever. I confess that I cannot
+recall any case within my experience which looked at the first
+glance so simple and yet which presented such difficulties."
+
+While Sherlock Holmes had been detailing this singular series of
+events, we had been whirling through the outskirts of the great
+town until the last straggling houses had been left behind, and
+we rattled along with a country hedge upon either side of us.
+Just as he finished, however, we drove through two scattered
+villages, where a few lights still glimmered in the windows.
+
+"We are on the outskirts of Lee," said my companion. "We have
+touched on three English counties in our short drive, starting in
+Middlesex, passing over an angle of Surrey, and ending in Kent.
+See that light among the trees? That is The Cedars, and beside
+that lamp sits a woman whose anxious ears have already, I have
+little doubt, caught the clink of our horse's feet."
+
+"But why are you not conducting the case from Baker Street?" I
+asked.
+
+"Because there are many inquiries which must be made out here.
+Mrs. St. Clair has most kindly put two rooms at my disposal, and
+you may rest assured that she will have nothing but a welcome for
+my friend and colleague. I hate to meet her, Watson, when I have
+no news of her husband. Here we are. Whoa, there, whoa!"
+
+We had pulled up in front of a large villa which stood within its
+own grounds. A stable-boy had run out to the horse's head, and
+springing down, I followed Holmes up the small, winding
+gravel-drive which led to the house. As we approached, the door
+flew open, and a little blonde woman stood in the opening, clad
+in some sort of light mousseline de soie, with a touch of fluffy
+pink chiffon at her neck and wrists. She stood with her figure
+outlined against the flood of light, one hand upon the door, one
+half-raised in her eagerness, her body slightly bent, her head
+and face protruded, with eager eyes and parted lips, a standing
+question.
+
+"Well?" she cried, "well?" And then, seeing that there were two
+of us, she gave a cry of hope which sank into a groan as she saw
+that my companion shook his head and shrugged his shoulders.
+
+"No good news?"
+
+"None."
+
+"No bad?"
+
+"No."
+
+"Thank God for that. But come in. You must be weary, for you have
+had a long day."
+
+"This is my friend, Dr. Watson. He has been of most vital use to
+me in several of my cases, and a lucky chance has made it
+possible for me to bring him out and associate him with this
+investigation."
+
+"I am delighted to see you," said she, pressing my hand warmly.
+"You will, I am sure, forgive anything that may be wanting in our
+arrangements, when you consider the blow which has come so
+suddenly upon us."
+
+"My dear madam," said I, "I am an old campaigner, and if I were
+not I can very well see that no apology is needed. If I can be of
+any assistance, either to you or to my friend here, I shall be
+indeed happy."
+
+"Now, Mr. Sherlock Holmes," said the lady as we entered a
+well-lit dining-room, upon the table of which a cold supper had
+been laid out, "I should very much like to ask you one or two
+plain questions, to which I beg that you will give a plain
+answer."
+
+"Certainly, madam."
+
+"Do not trouble about my feelings. I am not hysterical, nor given
+to fainting. I simply wish to hear your real, real opinion."
+
+"Upon what point?"
+
+"In your heart of hearts, do you think that Neville is alive?"
+
+Sherlock Holmes seemed to be embarrassed by the question.
+"Frankly, now!" she repeated, standing upon the rug and looking
+keenly down at him as he leaned back in a basket-chair.
+
+"Frankly, then, madam, I do not."
+
+"You think that he is dead?"
+
+"I do."
+
+"Murdered?"
+
+"I don't say that. Perhaps."
+
+"And on what day did he meet his death?"
+
+"On Monday."
+
+"Then perhaps, Mr. Holmes, you will be good enough to explain how
+it is that I have received a letter from him to-day."
+
+Sherlock Holmes sprang out of his chair as if he had been
+galvanised.
+
+"What!" he roared.
+
+"Yes, to-day." She stood smiling, holding up a little slip of
+paper in the air.
+
+"May I see it?"
+
+"Certainly."
+
+He snatched it from her in his eagerness, and smoothing it out
+upon the table he drew over the lamp and examined it intently. I
+had left my chair and was gazing at it over his shoulder. The
+envelope was a very coarse one and was stamped with the Gravesend
+postmark and with the date of that very day, or rather of the day
+before, for it was considerably after midnight.
+
+"Coarse writing," murmured Holmes. "Surely this is not your
+husband's writing, madam."
+
+"No, but the enclosure is."
+
+"I perceive also that whoever addressed the envelope had to go
+and inquire as to the address."
+
+"How can you tell that?"
+
+"The name, you see, is in perfectly black ink, which has dried
+itself. The rest is of the greyish colour, which shows that
+blotting-paper has been used. If it had been written straight
+off, and then blotted, none would be of a deep black shade. This
+man has written the name, and there has then been a pause before
+he wrote the address, which can only mean that he was not
+familiar with it. It is, of course, a trifle, but there is
+nothing so important as trifles. Let us now see the letter. Ha!
+there has been an enclosure here!"
+
+"Yes, there was a ring. His signet-ring."
+
+"And you are sure that this is your husband's hand?"
+
+"One of his hands."
+
+"One?"
+
+"His hand when he wrote hurriedly. It is very unlike his usual
+writing, and yet I know it well."
+
+"'Dearest do not be frightened. All will come well. There is a
+huge error which it may take some little time to rectify.
+Wait in patience.--NEVILLE.' Written in pencil upon the fly-leaf
+of a book, octavo size, no water-mark. Hum! Posted to-day in
+Gravesend by a man with a dirty thumb. Ha! And the flap has been
+gummed, if I am not very much in error, by a person who had been
+chewing tobacco. And you have no doubt that it is your husband's
+hand, madam?"
+
+"None. Neville wrote those words."
+
+"And they were posted to-day at Gravesend. Well, Mrs. St. Clair,
+the clouds lighten, though I should not venture to say that the
+danger is over."
+
+"But he must be alive, Mr. Holmes."
+
+"Unless this is a clever forgery to put us on the wrong scent.
+The ring, after all, proves nothing. It may have been taken from
+him."
+
+"No, no; it is, it is his very own writing!"
+
+"Very well. It may, however, have been written on Monday and only
+posted to-day."
+
+"That is possible."
+
+"If so, much may have happened between."
+
+"Oh, you must not discourage me, Mr. Holmes. I know that all is
+well with him. There is so keen a sympathy between us that I
+should know if evil came upon him. On the very day that I saw him
+last he cut himself in the bedroom, and yet I in the dining-room
+rushed upstairs instantly with the utmost certainty that
+something had happened. Do you think that I would respond to such
+a trifle and yet be ignorant of his death?"
+
+"I have seen too much not to know that the impression of a woman
+may be more valuable than the conclusion of an analytical
+reasoner. And in this letter you certainly have a very strong
+piece of evidence to corroborate your view. But if your husband
+is alive and able to write letters, why should he remain away
+from you?"
+
+"I cannot imagine. It is unthinkable."
+
+"And on Monday he made no remarks before leaving you?"
+
+"No."
+
+"And you were surprised to see him in Swandam Lane?"
+
+"Very much so."
+
+"Was the window open?"
+
+"Yes."
+
+"Then he might have called to you?"
+
+"He might."
+
+"He only, as I understand, gave an inarticulate cry?"
+
+"Yes."
+
+"A call for help, you thought?"
+
+"Yes. He waved his hands."
+
+"But it might have been a cry of surprise. Astonishment at the
+unexpected sight of you might cause him to throw up his hands?"
+
+"It is possible."
+
+"And you thought he was pulled back?"
+
+"He disappeared so suddenly."
+
+"He might have leaped back. You did not see anyone else in the
+room?"
+
+"No, but this horrible man confessed to having been there, and
+the Lascar was at the foot of the stairs."
+
+"Quite so. Your husband, as far as you could see, had his
+ordinary clothes on?"
+
+"But without his collar or tie. I distinctly saw his bare
+throat."
+
+"Had he ever spoken of Swandam Lane?"
+
+"Never."
+
+"Had he ever showed any signs of having taken opium?"
+
+"Never."
+
+"Thank you, Mrs. St. Clair. Those are the principal points about
+which I wished to be absolutely clear. We shall now have a little
+supper and then retire, for we may have a very busy day
+to-morrow."
+
+A large and comfortable double-bedded room had been placed at our
+disposal, and I was quickly between the sheets, for I was weary
+after my night of adventure. Sherlock Holmes was a man, however,
+who, when he had an unsolved problem upon his mind, would go for
+days, and even for a week, without rest, turning it over,
+rearranging his facts, looking at it from every point of view
+until he had either fathomed it or convinced himself that his
+data were insufficient. It was soon evident to me that he was now
+preparing for an all-night sitting. He took off his coat and
+waistcoat, put on a large blue dressing-gown, and then wandered
+about the room collecting pillows from his bed and cushions from
+the sofa and armchairs. With these he constructed a sort of
+Eastern divan, upon which he perched himself cross-legged, with
+an ounce of shag tobacco and a box of matches laid out in front
+of him. In the dim light of the lamp I saw him sitting there, an
+old briar pipe between his lips, his eyes fixed vacantly upon the
+corner of the ceiling, the blue smoke curling up from him,
+silent, motionless, with the light shining upon his strong-set
+aquiline features. So he sat as I dropped off to sleep, and so he
+sat when a sudden ejaculation caused me to wake up, and I found
+the summer sun shining into the apartment. The pipe was still
+between his lips, the smoke still curled upward, and the room was
+full of a dense tobacco haze, but nothing remained of the heap of
+shag which I had seen upon the previous night.
+
+"Awake, Watson?" he asked.
+
+"Yes."
+
+"Game for a morning drive?"
+
+"Certainly."
+
+"Then dress. No one is stirring yet, but I know where the
+stable-boy sleeps, and we shall soon have the trap out." He
+chuckled to himself as he spoke, his eyes twinkled, and he seemed
+a different man to the sombre thinker of the previous night.
+
+As I dressed I glanced at my watch. It was no wonder that no one
+was stirring. It was twenty-five minutes past four. I had hardly
+finished when Holmes returned with the news that the boy was
+putting in the horse.
+
+"I want to test a little theory of mine," said he, pulling on his
+boots. "I think, Watson, that you are now standing in the
+presence of one of the most absolute fools in Europe. I deserve
+to be kicked from here to Charing Cross. But I think I have the
+key of the affair now."
+
+"And where is it?" I asked, smiling.
+
+"In the bathroom," he answered. "Oh, yes, I am not joking," he
+continued, seeing my look of incredulity. "I have just been
+there, and I have taken it out, and I have got it in this
+Gladstone bag. Come on, my boy, and we shall see whether it will
+not fit the lock."
+
+We made our way downstairs as quietly as possible, and out into
+the bright morning sunshine. In the road stood our horse and
+trap, with the half-clad stable-boy waiting at the head. We both
+sprang in, and away we dashed down the London Road. A few country
+carts were stirring, bearing in vegetables to the metropolis, but
+the lines of villas on either side were as silent and lifeless as
+some city in a dream.
+
+"It has been in some points a singular case," said Holmes,
+flicking the horse on into a gallop. "I confess that I have been
+as blind as a mole, but it is better to learn wisdom late than
+never to learn it at all."
+
+In town the earliest risers were just beginning to look sleepily
+from their windows as we drove through the streets of the Surrey
+side. Passing down the Waterloo Bridge Road we crossed over the
+river, and dashing up Wellington Street wheeled sharply to the
+right and found ourselves in Bow Street. Sherlock Holmes was well
+known to the force, and the two constables at the door saluted
+him. One of them held the horse's head while the other led us in.
+
+"Who is on duty?" asked Holmes.
+
+"Inspector Bradstreet, sir."
+
+"Ah, Bradstreet, how are you?" A tall, stout official had come
+down the stone-flagged passage, in a peaked cap and frogged
+jacket. "I wish to have a quiet word with you, Bradstreet."
+"Certainly, Mr. Holmes. Step into my room here." It was a small,
+office-like room, with a huge ledger upon the table, and a
+telephone projecting from the wall. The inspector sat down at his
+desk.
+
+"What can I do for you, Mr. Holmes?"
+
+"I called about that beggarman, Boone--the one who was charged
+with being concerned in the disappearance of Mr. Neville St.
+Clair, of Lee."
+
+"Yes. He was brought up and remanded for further inquiries."
+
+"So I heard. You have him here?"
+
+"In the cells."
+
+"Is he quiet?"
+
+"Oh, he gives no trouble. But he is a dirty scoundrel."
+
+"Dirty?"
+
+"Yes, it is all we can do to make him wash his hands, and his
+face is as black as a tinker's. Well, when once his case has been
+settled, he will have a regular prison bath; and I think, if you
+saw him, you would agree with me that he needed it."
+
+"I should like to see him very much."
+
+"Would you? That is easily done. Come this way. You can leave
+your bag."
+
+"No, I think that I'll take it."
+
+"Very good. Come this way, if you please." He led us down a
+passage, opened a barred door, passed down a winding stair, and
+brought us to a whitewashed corridor with a line of doors on each
+side.
+
+"The third on the right is his," said the inspector. "Here it
+is!" He quietly shot back a panel in the upper part of the door
+and glanced through.
+
+"He is asleep," said he. "You can see him very well."
+
+We both put our eyes to the grating. The prisoner lay with his
+face towards us, in a very deep sleep, breathing slowly and
+heavily. He was a middle-sized man, coarsely clad as became his
+calling, with a coloured shirt protruding through the rent in his
+tattered coat. He was, as the inspector had said, extremely
+dirty, but the grime which covered his face could not conceal its
+repulsive ugliness. A broad wheal from an old scar ran right
+across it from eye to chin, and by its contraction had turned up
+one side of the upper lip, so that three teeth were exposed in a
+perpetual snarl. A shock of very bright red hair grew low over
+his eyes and forehead.
+
+"He's a beauty, isn't he?" said the inspector.
+
+"He certainly needs a wash," remarked Holmes. "I had an idea that
+he might, and I took the liberty of bringing the tools with me."
+He opened the Gladstone bag as he spoke, and took out, to my
+astonishment, a very large bath-sponge.
+
+"He! he! You are a funny one," chuckled the inspector.
+
+"Now, if you will have the great goodness to open that door very
+quietly, we will soon make him cut a much more respectable
+figure."
+
+"Well, I don't know why not," said the inspector. "He doesn't
+look a credit to the Bow Street cells, does he?" He slipped his
+key into the lock, and we all very quietly entered the cell. The
+sleeper half turned, and then settled down once more into a deep
+slumber. Holmes stooped to the water-jug, moistened his sponge,
+and then rubbed it twice vigorously across and down the
+prisoner's face.
+
+"Let me introduce you," he shouted, "to Mr. Neville St. Clair, of
+Lee, in the county of Kent."
+
+Never in my life have I seen such a sight. The man's face peeled
+off under the sponge like the bark from a tree. Gone was the
+coarse brown tint! Gone, too, was the horrid scar which had
+seamed it across, and the twisted lip which had given the
+repulsive sneer to the face! A twitch brought away the tangled
+red hair, and there, sitting up in his bed, was a pale,
+sad-faced, refined-looking man, black-haired and smooth-skinned,
+rubbing his eyes and staring about him with sleepy bewilderment.
+Then suddenly realising the exposure, he broke into a scream and
+threw himself down with his face to the pillow.
+
+"Great heavens!" cried the inspector, "it is, indeed, the missing
+man. I know him from the photograph."
+
+The prisoner turned with the reckless air of a man who abandons
+himself to his destiny. "Be it so," said he. "And pray what am I
+charged with?"
+
+"With making away with Mr. Neville St.-- Oh, come, you can't be
+charged with that unless they make a case of attempted suicide of
+it," said the inspector with a grin. "Well, I have been
+twenty-seven years in the force, but this really takes the cake."
+
+"If I am Mr. Neville St. Clair, then it is obvious that no crime
+has been committed, and that, therefore, I am illegally
+detained."
+
+"No crime, but a very great error has been committed," said
+Holmes. "You would have done better to have trusted your wife."
+
+"It was not the wife; it was the children," groaned the prisoner.
+"God help me, I would not have them ashamed of their father. My
+God! What an exposure! What can I do?"
+
+Sherlock Holmes sat down beside him on the couch and patted him
+kindly on the shoulder.
+
+"If you leave it to a court of law to clear the matter up," said
+he, "of course you can hardly avoid publicity. On the other hand,
+if you convince the police authorities that there is no possible
+case against you, I do not know that there is any reason that the
+details should find their way into the papers. Inspector
+Bradstreet would, I am sure, make notes upon anything which you
+might tell us and submit it to the proper authorities. The case
+would then never go into court at all."
+
+"God bless you!" cried the prisoner passionately. "I would have
+endured imprisonment, ay, even execution, rather than have left
+my miserable secret as a family blot to my children.
+
+"You are the first who have ever heard my story. My father was a
+schoolmaster in Chesterfield, where I received an excellent
+education. I travelled in my youth, took to the stage, and
+finally became a reporter on an evening paper in London. One day
+my editor wished to have a series of articles upon begging in the
+metropolis, and I volunteered to supply them. There was the point
+from which all my adventures started. It was only by trying
+begging as an amateur that I could get the facts upon which to
+base my articles. When an actor I had, of course, learned all the
+secrets of making up, and had been famous in the green-room for
+my skill. I took advantage now of my attainments. I painted my
+face, and to make myself as pitiable as possible I made a good
+scar and fixed one side of my lip in a twist by the aid of a
+small slip of flesh-coloured plaster. Then with a red head of
+hair, and an appropriate dress, I took my station in the business
+part of the city, ostensibly as a match-seller but really as a
+beggar. For seven hours I plied my trade, and when I returned
+home in the evening I found to my surprise that I had received no
+less than 26s. 4d.
+
+"I wrote my articles and thought little more of the matter until,
+some time later, I backed a bill for a friend and had a writ
+served upon me for 25 pounds. I was at my wit's end where to get
+the money, but a sudden idea came to me. I begged a fortnight's
+grace from the creditor, asked for a holiday from my employers,
+and spent the time in begging in the City under my disguise. In
+ten days I had the money and had paid the debt.
+
+"Well, you can imagine how hard it was to settle down to arduous
+work at 2 pounds a week when I knew that I could earn as much in
+a day by smearing my face with a little paint, laying my cap on
+the ground, and sitting still. It was a long fight between my
+pride and the money, but the dollars won at last, and I threw up
+reporting and sat day after day in the corner which I had first
+chosen, inspiring pity by my ghastly face and filling my pockets
+with coppers. Only one man knew my secret. He was the keeper of a
+low den in which I used to lodge in Swandam Lane, where I could
+every morning emerge as a squalid beggar and in the evenings
+transform myself into a well-dressed man about town. This fellow,
+a Lascar, was well paid by me for his rooms, so that I knew that
+my secret was safe in his possession.
+
+"Well, very soon I found that I was saving considerable sums of
+money. I do not mean that any beggar in the streets of London
+could earn 700 pounds a year--which is less than my average
+takings--but I had exceptional advantages in my power of making
+up, and also in a facility of repartee, which improved by
+practice and made me quite a recognised character in the City.
+All day a stream of pennies, varied by silver, poured in upon me,
+and it was a very bad day in which I failed to take 2 pounds.
+
+"As I grew richer I grew more ambitious, took a house in the
+country, and eventually married, without anyone having a
+suspicion as to my real occupation. My dear wife knew that I had
+business in the City. She little knew what.
+
+"Last Monday I had finished for the day and was dressing in my
+room above the opium den when I looked out of my window and saw,
+to my horror and astonishment, that my wife was standing in the
+street, with her eyes fixed full upon me. I gave a cry of
+surprise, threw up my arms to cover my face, and, rushing to my
+confidant, the Lascar, entreated him to prevent anyone from
+coming up to me. I heard her voice downstairs, but I knew that
+she could not ascend. Swiftly I threw off my clothes, pulled on
+those of a beggar, and put on my pigments and wig. Even a wife's
+eyes could not pierce so complete a disguise. But then it
+occurred to me that there might be a search in the room, and that
+the clothes might betray me. I threw open the window, reopening
+by my violence a small cut which I had inflicted upon myself in
+the bedroom that morning. Then I seized my coat, which was
+weighted by the coppers which I had just transferred to it from
+the leather bag in which I carried my takings. I hurled it out of
+the window, and it disappeared into the Thames. The other clothes
+would have followed, but at that moment there was a rush of
+constables up the stair, and a few minutes after I found, rather,
+I confess, to my relief, that instead of being identified as Mr.
+Neville St. Clair, I was arrested as his murderer.
+
+"I do not know that there is anything else for me to explain. I
+was determined to preserve my disguise as long as possible, and
+hence my preference for a dirty face. Knowing that my wife would
+be terribly anxious, I slipped off my ring and confided it to the
+Lascar at a moment when no constable was watching me, together
+with a hurried scrawl, telling her that she had no cause to
+fear."
+
+"That note only reached her yesterday," said Holmes.
+
+"Good God! What a week she must have spent!"
+
+"The police have watched this Lascar," said Inspector Bradstreet,
+"and I can quite understand that he might find it difficult to
+post a letter unobserved. Probably he handed it to some sailor
+customer of his, who forgot all about it for some days."
+
+"That was it," said Holmes, nodding approvingly; "I have no doubt
+of it. But have you never been prosecuted for begging?"
+
+"Many times; but what was a fine to me?"
+
+"It must stop here, however," said Bradstreet. "If the police are
+to hush this thing up, there must be no more of Hugh Boone."
+
+"I have sworn it by the most solemn oaths which a man can take."
+
+"In that case I think that it is probable that no further steps
+may be taken. But if you are found again, then all must come out.
+I am sure, Mr. Holmes, that we are very much indebted to you for
+having cleared the matter up. I wish I knew how you reach your
+results."
+
+"I reached this one," said my friend, "by sitting upon five
+pillows and consuming an ounce of shag. I think, Watson, that if
+we drive to Baker Street we shall just be in time for breakfast."
+
+
+
+VII. THE ADVENTURE OF THE BLUE CARBUNCLE
+
+I had called upon my friend Sherlock Holmes upon the second
+morning after Christmas, with the intention of wishing him the
+compliments of the season. He was lounging upon the sofa in a
+purple dressing-gown, a pipe-rack within his reach upon the
+right, and a pile of crumpled morning papers, evidently newly
+studied, near at hand. Beside the couch was a wooden chair, and
+on the angle of the back hung a very seedy and disreputable
+hard-felt hat, much the worse for wear, and cracked in several
+places. A lens and a forceps lying upon the seat of the chair
+suggested that the hat had been suspended in this manner for the
+purpose of examination.
+
+"You are engaged," said I; "perhaps I interrupt you."
+
+"Not at all. I am glad to have a friend with whom I can discuss
+my results. The matter is a perfectly trivial one"--he jerked his
+thumb in the direction of the old hat--"but there are points in
+connection with it which are not entirely devoid of interest and
+even of instruction."
+
+I seated myself in his armchair and warmed my hands before his
+crackling fire, for a sharp frost had set in, and the windows
+were thick with the ice crystals. "I suppose," I remarked, "that,
+homely as it looks, this thing has some deadly story linked on to
+it--that it is the clue which will guide you in the solution of
+some mystery and the punishment of some crime."
+
+"No, no. No crime," said Sherlock Holmes, laughing. "Only one of
+those whimsical little incidents which will happen when you have
+four million human beings all jostling each other within the
+space of a few square miles. Amid the action and reaction of so
+dense a swarm of humanity, every possible combination of events
+may be expected to take place, and many a little problem will be
+presented which may be striking and bizarre without being
+criminal. We have already had experience of such."
+
+"So much so," I remarked, "that of the last six cases which I
+have added to my notes, three have been entirely free of any
+legal crime."
+
+"Precisely. You allude to my attempt to recover the Irene Adler
+papers, to the singular case of Miss Mary Sutherland, and to the
+adventure of the man with the twisted lip. Well, I have no doubt
+that this small matter will fall into the same innocent category.
+You know Peterson, the commissionaire?"
+
+"Yes."
+
+"It is to him that this trophy belongs."
+
+"It is his hat."
+
+"No, no, he found it. Its owner is unknown. I beg that you will
+look upon it not as a battered billycock but as an intellectual
+problem. And, first, as to how it came here. It arrived upon
+Christmas morning, in company with a good fat goose, which is, I
+have no doubt, roasting at this moment in front of Peterson's
+fire. The facts are these: about four o'clock on Christmas
+morning, Peterson, who, as you know, is a very honest fellow, was
+returning from some small jollification and was making his way
+homeward down Tottenham Court Road. In front of him he saw, in
+the gaslight, a tallish man, walking with a slight stagger, and
+carrying a white goose slung over his shoulder. As he reached the
+corner of Goodge Street, a row broke out between this stranger
+and a little knot of roughs. One of the latter knocked off the
+man's hat, on which he raised his stick to defend himself and,
+swinging it over his head, smashed the shop window behind him.
+Peterson had rushed forward to protect the stranger from his
+assailants; but the man, shocked at having broken the window, and
+seeing an official-looking person in uniform rushing towards him,
+dropped his goose, took to his heels, and vanished amid the
+labyrinth of small streets which lie at the back of Tottenham
+Court Road. The roughs had also fled at the appearance of
+Peterson, so that he was left in possession of the field of
+battle, and also of the spoils of victory in the shape of this
+battered hat and a most unimpeachable Christmas goose."
+
+"Which surely he restored to their owner?"
+
+"My dear fellow, there lies the problem. It is true that 'For
+Mrs. Henry Baker' was printed upon a small card which was tied to
+the bird's left leg, and it is also true that the initials 'H.
+B.' are legible upon the lining of this hat, but as there are
+some thousands of Bakers, and some hundreds of Henry Bakers in
+this city of ours, it is not easy to restore lost property to any
+one of them."
+
+"What, then, did Peterson do?"
+
+"He brought round both hat and goose to me on Christmas morning,
+knowing that even the smallest problems are of interest to me.
+The goose we retained until this morning, when there were signs
+that, in spite of the slight frost, it would be well that it
+should be eaten without unnecessary delay. Its finder has carried
+it off, therefore, to fulfil the ultimate destiny of a goose,
+while I continue to retain the hat of the unknown gentleman who
+lost his Christmas dinner."
+
+"Did he not advertise?"
+
+"No."
+
+"Then, what clue could you have as to his identity?"
+
+"Only as much as we can deduce."
+
+"From his hat?"
+
+"Precisely."
+
+"But you are joking. What can you gather from this old battered
+felt?"
+
+"Here is my lens. You know my methods. What can you gather
+yourself as to the individuality of the man who has worn this
+article?"
+
+I took the tattered object in my hands and turned it over rather
+ruefully. It was a very ordinary black hat of the usual round
+shape, hard and much the worse for wear. The lining had been of
+red silk, but was a good deal discoloured. There was no maker's
+name; but, as Holmes had remarked, the initials "H. B." were
+scrawled upon one side. It was pierced in the brim for a
+hat-securer, but the elastic was missing. For the rest, it was
+cracked, exceedingly dusty, and spotted in several places,
+although there seemed to have been some attempt to hide the
+discoloured patches by smearing them with ink.
+
+"I can see nothing," said I, handing it back to my friend.
+
+"On the contrary, Watson, you can see everything. You fail,
+however, to reason from what you see. You are too timid in
+drawing your inferences."
+
+"Then, pray tell me what it is that you can infer from this hat?"
+
+He picked it up and gazed at it in the peculiar introspective
+fashion which was characteristic of him. "It is perhaps less
+suggestive than it might have been," he remarked, "and yet there
+are a few inferences which are very distinct, and a few others
+which represent at least a strong balance of probability. That
+the man was highly intellectual is of course obvious upon the
+face of it, and also that he was fairly well-to-do within the
+last three years, although he has now fallen upon evil days. He
+had foresight, but has less now than formerly, pointing to a
+moral retrogression, which, when taken with the decline of his
+fortunes, seems to indicate some evil influence, probably drink,
+at work upon him. This may account also for the obvious fact that
+his wife has ceased to love him."
+
+"My dear Holmes!"
+
+"He has, however, retained some degree of self-respect," he
+continued, disregarding my remonstrance. "He is a man who leads a
+sedentary life, goes out little, is out of training entirely, is
+middle-aged, has grizzled hair which he has had cut within the
+last few days, and which he anoints with lime-cream. These are
+the more patent facts which are to be deduced from his hat. Also,
+by the way, that it is extremely improbable that he has gas laid
+on in his house."
+
+"You are certainly joking, Holmes."
+
+"Not in the least. Is it possible that even now, when I give you
+these results, you are unable to see how they are attained?"
+
+"I have no doubt that I am very stupid, but I must confess that I
+am unable to follow you. For example, how did you deduce that
+this man was intellectual?"
+
+For answer Holmes clapped the hat upon his head. It came right
+over the forehead and settled upon the bridge of his nose. "It is
+a question of cubic capacity," said he; "a man with so large a
+brain must have something in it."
+
+"The decline of his fortunes, then?"
+
+"This hat is three years old. These flat brims curled at the edge
+came in then. It is a hat of the very best quality. Look at the
+band of ribbed silk and the excellent lining. If this man could
+afford to buy so expensive a hat three years ago, and has had no
+hat since, then he has assuredly gone down in the world."
+
+"Well, that is clear enough, certainly. But how about the
+foresight and the moral retrogression?"
+
+Sherlock Holmes laughed. "Here is the foresight," said he putting
+his finger upon the little disc and loop of the hat-securer.
+"They are never sold upon hats. If this man ordered one, it is a
+sign of a certain amount of foresight, since he went out of his
+way to take this precaution against the wind. But since we see
+that he has broken the elastic and has not troubled to replace
+it, it is obvious that he has less foresight now than formerly,
+which is a distinct proof of a weakening nature. On the other
+hand, he has endeavoured to conceal some of these stains upon the
+felt by daubing them with ink, which is a sign that he has not
+entirely lost his self-respect."
+
+"Your reasoning is certainly plausible."
+
+"The further points, that he is middle-aged, that his hair is
+grizzled, that it has been recently cut, and that he uses
+lime-cream, are all to be gathered from a close examination of the
+lower part of the lining. The lens discloses a large number of
+hair-ends, clean cut by the scissors of the barber. They all
+appear to be adhesive, and there is a distinct odour of
+lime-cream. This dust, you will observe, is not the gritty, grey
+dust of the street but the fluffy brown dust of the house,
+showing that it has been hung up indoors most of the time, while
+the marks of moisture upon the inside are proof positive that the
+wearer perspired very freely, and could therefore, hardly be in
+the best of training."
+
+"But his wife--you said that she had ceased to love him."
+
+"This hat has not been brushed for weeks. When I see you, my dear
+Watson, with a week's accumulation of dust upon your hat, and
+when your wife allows you to go out in such a state, I shall fear
+that you also have been unfortunate enough to lose your wife's
+affection."
+
+"But he might be a bachelor."
+
+"Nay, he was bringing home the goose as a peace-offering to his
+wife. Remember the card upon the bird's leg."
+
+"You have an answer to everything. But how on earth do you deduce
+that the gas is not laid on in his house?"
+
+"One tallow stain, or even two, might come by chance; but when I
+see no less than five, I think that there can be little doubt
+that the individual must be brought into frequent contact with
+burning tallow--walks upstairs at night probably with his hat in
+one hand and a guttering candle in the other. Anyhow, he never
+got tallow-stains from a gas-jet. Are you satisfied?"
+
+"Well, it is very ingenious," said I, laughing; "but since, as
+you said just now, there has been no crime committed, and no harm
+done save the loss of a goose, all this seems to be rather a
+waste of energy."
+
+Sherlock Holmes had opened his mouth to reply, when the door flew
+open, and Peterson, the commissionaire, rushed into the apartment
+with flushed cheeks and the face of a man who is dazed with
+astonishment.
+
+"The goose, Mr. Holmes! The goose, sir!" he gasped.
+
+"Eh? What of it, then? Has it returned to life and flapped off
+through the kitchen window?" Holmes twisted himself round upon
+the sofa to get a fairer view of the man's excited face.
+
+"See here, sir! See what my wife found in its crop!" He held out
+his hand and displayed upon the centre of the palm a brilliantly
+scintillating blue stone, rather smaller than a bean in size, but
+of such purity and radiance that it twinkled like an electric
+point in the dark hollow of his hand.
+
+Sherlock Holmes sat up with a whistle. "By Jove, Peterson!" said
+he, "this is treasure trove indeed. I suppose you know what you
+have got?"
+
+"A diamond, sir? A precious stone. It cuts into glass as though
+it were putty."
+
+"It's more than a precious stone. It is the precious stone."
+
+"Not the Countess of Morcar's blue carbuncle!" I ejaculated.
+
+"Precisely so. I ought to know its size and shape, seeing that I
+have read the advertisement about it in The Times every day
+lately. It is absolutely unique, and its value can only be
+conjectured, but the reward offered of 1000 pounds is certainly
+not within a twentieth part of the market price."
+
+"A thousand pounds! Great Lord of mercy!" The commissionaire
+plumped down into a chair and stared from one to the other of us.
+
+"That is the reward, and I have reason to know that there are
+sentimental considerations in the background which would induce
+the Countess to part with half her fortune if she could but
+recover the gem."
+
+"It was lost, if I remember aright, at the Hotel Cosmopolitan," I
+remarked.
+
+"Precisely so, on December 22nd, just five days ago. John Horner,
+a plumber, was accused of having abstracted it from the lady's
+jewel-case. The evidence against him was so strong that the case
+has been referred to the Assizes. I have some account of the
+matter here, I believe." He rummaged amid his newspapers,
+glancing over the dates, until at last he smoothed one out,
+doubled it over, and read the following paragraph:
+
+"Hotel Cosmopolitan Jewel Robbery. John Horner, 26, plumber, was
+brought up upon the charge of having upon the 22nd inst.,
+abstracted from the jewel-case of the Countess of Morcar the
+valuable gem known as the blue carbuncle. James Ryder,
+upper-attendant at the hotel, gave his evidence to the effect
+that he had shown Horner up to the dressing-room of the Countess
+of Morcar upon the day of the robbery in order that he might
+solder the second bar of the grate, which was loose. He had
+remained with Horner some little time, but had finally been
+called away. On returning, he found that Horner had disappeared,
+that the bureau had been forced open, and that the small morocco
+casket in which, as it afterwards transpired, the Countess was
+accustomed to keep her jewel, was lying empty upon the
+dressing-table. Ryder instantly gave the alarm, and Horner was
+arrested the same evening; but the stone could not be found
+either upon his person or in his rooms. Catherine Cusack, maid to
+the Countess, deposed to having heard Ryder's cry of dismay on
+discovering the robbery, and to having rushed into the room,
+where she found matters as described by the last witness.
+Inspector Bradstreet, B division, gave evidence as to the arrest
+of Horner, who struggled frantically, and protested his innocence
+in the strongest terms. Evidence of a previous conviction for
+robbery having been given against the prisoner, the magistrate
+refused to deal summarily with the offence, but referred it to
+the Assizes. Horner, who had shown signs of intense emotion
+during the proceedings, fainted away at the conclusion and was
+carried out of court."
+
+"Hum! So much for the police-court," said Holmes thoughtfully,
+tossing aside the paper. "The question for us now to solve is the
+sequence of events leading from a rifled jewel-case at one end to
+the crop of a goose in Tottenham Court Road at the other. You
+see, Watson, our little deductions have suddenly assumed a much
+more important and less innocent aspect. Here is the stone; the
+stone came from the goose, and the goose came from Mr. Henry
+Baker, the gentleman with the bad hat and all the other
+characteristics with which I have bored you. So now we must set
+ourselves very seriously to finding this gentleman and
+ascertaining what part he has played in this little mystery. To
+do this, we must try the simplest means first, and these lie
+undoubtedly in an advertisement in all the evening papers. If
+this fail, I shall have recourse to other methods."
+
+"What will you say?"
+
+"Give me a pencil and that slip of paper. Now, then: 'Found at
+the corner of Goodge Street, a goose and a black felt hat. Mr.
+Henry Baker can have the same by applying at 6:30 this evening at
+221B, Baker Street.' That is clear and concise."
+
+"Very. But will he see it?"
+
+"Well, he is sure to keep an eye on the papers, since, to a poor
+man, the loss was a heavy one. He was clearly so scared by his
+mischance in breaking the window and by the approach of Peterson
+that he thought of nothing but flight, but since then he must
+have bitterly regretted the impulse which caused him to drop his
+bird. Then, again, the introduction of his name will cause him to
+see it, for everyone who knows him will direct his attention to
+it. Here you are, Peterson, run down to the advertising agency
+and have this put in the evening papers."
+
+"In which, sir?"
+
+"Oh, in the Globe, Star, Pall Mall, St. James's, Evening News,
+Standard, Echo, and any others that occur to you."
+
+"Very well, sir. And this stone?"
+
+"Ah, yes, I shall keep the stone. Thank you. And, I say,
+Peterson, just buy a goose on your way back and leave it here
+with me, for we must have one to give to this gentleman in place
+of the one which your family is now devouring."
+
+When the commissionaire had gone, Holmes took up the stone and
+held it against the light. "It's a bonny thing," said he. "Just
+see how it glints and sparkles. Of course it is a nucleus and
+focus of crime. Every good stone is. They are the devil's pet
+baits. In the larger and older jewels every facet may stand for a
+bloody deed. This stone is not yet twenty years old. It was found
+in the banks of the Amoy River in southern China and is remarkable
+in having every characteristic of the carbuncle, save that it is
+blue in shade instead of ruby red. In spite of its youth, it has
+already a sinister history. There have been two murders, a
+vitriol-throwing, a suicide, and several robberies brought about
+for the sake of this forty-grain weight of crystallised charcoal.
+Who would think that so pretty a toy would be a purveyor to the
+gallows and the prison? I'll lock it up in my strong box now and
+drop a line to the Countess to say that we have it."
+
+"Do you think that this man Horner is innocent?"
+
+"I cannot tell."
+
+"Well, then, do you imagine that this other one, Henry Baker, had
+anything to do with the matter?"
+
+"It is, I think, much more likely that Henry Baker is an
+absolutely innocent man, who had no idea that the bird which he
+was carrying was of considerably more value than if it were made
+of solid gold. That, however, I shall determine by a very simple
+test if we have an answer to our advertisement."
+
+"And you can do nothing until then?"
+
+"Nothing."
+
+"In that case I shall continue my professional round. But I shall
+come back in the evening at the hour you have mentioned, for I
+should like to see the solution of so tangled a business."
+
+"Very glad to see you. I dine at seven. There is a woodcock, I
+believe. By the way, in view of recent occurrences, perhaps I
+ought to ask Mrs. Hudson to examine its crop."
+
+I had been delayed at a case, and it was a little after half-past
+six when I found myself in Baker Street once more. As I
+approached the house I saw a tall man in a Scotch bonnet with a
+coat which was buttoned up to his chin waiting outside in the
+bright semicircle which was thrown from the fanlight. Just as I
+arrived the door was opened, and we were shown up together to
+Holmes' room.
+
+"Mr. Henry Baker, I believe," said he, rising from his armchair
+and greeting his visitor with the easy air of geniality which he
+could so readily assume. "Pray take this chair by the fire, Mr.
+Baker. It is a cold night, and I observe that your circulation is
+more adapted for summer than for winter. Ah, Watson, you have
+just come at the right time. Is that your hat, Mr. Baker?"
+
+"Yes, sir, that is undoubtedly my hat."
+
+He was a large man with rounded shoulders, a massive head, and a
+broad, intelligent face, sloping down to a pointed beard of
+grizzled brown. A touch of red in nose and cheeks, with a slight
+tremor of his extended hand, recalled Holmes' surmise as to his
+habits. His rusty black frock-coat was buttoned right up in
+front, with the collar turned up, and his lank wrists protruded
+from his sleeves without a sign of cuff or shirt. He spoke in a
+slow staccato fashion, choosing his words with care, and gave the
+impression generally of a man of learning and letters who had had
+ill-usage at the hands of fortune.
+
+"We have retained these things for some days," said Holmes,
+"because we expected to see an advertisement from you giving your
+address. I am at a loss to know now why you did not advertise."
+
+Our visitor gave a rather shamefaced laugh. "Shillings have not
+been so plentiful with me as they once were," he remarked. "I had
+no doubt that the gang of roughs who assaulted me had carried off
+both my hat and the bird. I did not care to spend more money in a
+hopeless attempt at recovering them."
+
+"Very naturally. By the way, about the bird, we were compelled to
+eat it."
+
+"To eat it!" Our visitor half rose from his chair in his
+excitement.
+
+"Yes, it would have been of no use to anyone had we not done so.
+But I presume that this other goose upon the sideboard, which is
+about the same weight and perfectly fresh, will answer your
+purpose equally well?"
+
+"Oh, certainly, certainly," answered Mr. Baker with a sigh of
+relief.
+
+"Of course, we still have the feathers, legs, crop, and so on of
+your own bird, so if you wish--"
+
+The man burst into a hearty laugh. "They might be useful to me as
+relics of my adventure," said he, "but beyond that I can hardly
+see what use the disjecta membra of my late acquaintance are
+going to be to me. No, sir, I think that, with your permission, I
+will confine my attentions to the excellent bird which I perceive
+upon the sideboard."
+
+Sherlock Holmes glanced sharply across at me with a slight shrug
+of his shoulders.
+
+"There is your hat, then, and there your bird," said he. "By the
+way, would it bore you to tell me where you got the other one
+from? I am somewhat of a fowl fancier, and I have seldom seen a
+better grown goose."
+
+"Certainly, sir," said Baker, who had risen and tucked his newly
+gained property under his arm. "There are a few of us who
+frequent the Alpha Inn, near the Museum--we are to be found in
+the Museum itself during the day, you understand. This year our
+good host, Windigate by name, instituted a goose club, by which,
+on consideration of some few pence every week, we were each to
+receive a bird at Christmas. My pence were duly paid, and the
+rest is familiar to you. I am much indebted to you, sir, for a
+Scotch bonnet is fitted neither to my years nor my gravity." With
+a comical pomposity of manner he bowed solemnly to both of us and
+strode off upon his way.
+
+"So much for Mr. Henry Baker," said Holmes when he had closed the
+door behind him. "It is quite certain that he knows nothing
+whatever about the matter. Are you hungry, Watson?"
+
+"Not particularly."
+
+"Then I suggest that we turn our dinner into a supper and follow
+up this clue while it is still hot."
+
+"By all means."
+
+It was a bitter night, so we drew on our ulsters and wrapped
+cravats about our throats. Outside, the stars were shining coldly
+in a cloudless sky, and the breath of the passers-by blew out
+into smoke like so many pistol shots. Our footfalls rang out
+crisply and loudly as we swung through the doctors' quarter,
+Wimpole Street, Harley Street, and so through Wigmore Street into
+Oxford Street. In a quarter of an hour we were in Bloomsbury at
+the Alpha Inn, which is a small public-house at the corner of one
+of the streets which runs down into Holborn. Holmes pushed open
+the door of the private bar and ordered two glasses of beer from
+the ruddy-faced, white-aproned landlord.
+
+"Your beer should be excellent if it is as good as your geese,"
+said he.
+
+"My geese!" The man seemed surprised.
+
+"Yes. I was speaking only half an hour ago to Mr. Henry Baker,
+who was a member of your goose club."
+
+"Ah! yes, I see. But you see, sir, them's not our geese."
+
+"Indeed! Whose, then?"
+
+"Well, I got the two dozen from a salesman in Covent Garden."
+
+"Indeed? I know some of them. Which was it?"
+
+"Breckinridge is his name."
+
+"Ah! I don't know him. Well, here's your good health landlord,
+and prosperity to your house. Good-night."
+
+"Now for Mr. Breckinridge," he continued, buttoning up his coat
+as we came out into the frosty air. "Remember, Watson that though
+we have so homely a thing as a goose at one end of this chain, we
+have at the other a man who will certainly get seven years' penal
+servitude unless we can establish his innocence. It is possible
+that our inquiry may but confirm his guilt; but, in any case, we
+have a line of investigation which has been missed by the police,
+and which a singular chance has placed in our hands. Let us
+follow it out to the bitter end. Faces to the south, then, and
+quick march!"
+
+We passed across Holborn, down Endell Street, and so through a
+zigzag of slums to Covent Garden Market. One of the largest
+stalls bore the name of Breckinridge upon it, and the proprietor
+a horsey-looking man, with a sharp face and trim side-whiskers was
+helping a boy to put up the shutters.
+
+"Good-evening. It's a cold night," said Holmes.
+
+The salesman nodded and shot a questioning glance at my
+companion.
+
+"Sold out of geese, I see," continued Holmes, pointing at the
+bare slabs of marble.
+
+"Let you have five hundred to-morrow morning."
+
+"That's no good."
+
+"Well, there are some on the stall with the gas-flare."
+
+"Ah, but I was recommended to you."
+
+"Who by?"
+
+"The landlord of the Alpha."
+
+"Oh, yes; I sent him a couple of dozen."
+
+"Fine birds they were, too. Now where did you get them from?"
+
+To my surprise the question provoked a burst of anger from the
+salesman.
+
+"Now, then, mister," said he, with his head cocked and his arms
+akimbo, "what are you driving at? Let's have it straight, now."
+
+"It is straight enough. I should like to know who sold you the
+geese which you supplied to the Alpha."
+
+"Well then, I shan't tell you. So now!"
+
+"Oh, it is a matter of no importance; but I don't know why you
+should be so warm over such a trifle."
+
+"Warm! You'd be as warm, maybe, if you were as pestered as I am.
+When I pay good money for a good article there should be an end
+of the business; but it's 'Where are the geese?' and 'Who did you
+sell the geese to?' and 'What will you take for the geese?' One
+would think they were the only geese in the world, to hear the
+fuss that is made over them."
+
+"Well, I have no connection with any other people who have been
+making inquiries," said Holmes carelessly. "If you won't tell us
+the bet is off, that is all. But I'm always ready to back my
+opinion on a matter of fowls, and I have a fiver on it that the
+bird I ate is country bred."
+
+"Well, then, you've lost your fiver, for it's town bred," snapped
+the salesman.
+
+"It's nothing of the kind."
+
+"I say it is."
+
+"I don't believe it."
+
+"D'you think you know more about fowls than I, who have handled
+them ever since I was a nipper? I tell you, all those birds that
+went to the Alpha were town bred."
+
+"You'll never persuade me to believe that."
+
+"Will you bet, then?"
+
+"It's merely taking your money, for I know that I am right. But
+I'll have a sovereign on with you, just to teach you not to be
+obstinate."
+
+The salesman chuckled grimly. "Bring me the books, Bill," said
+he.
+
+The small boy brought round a small thin volume and a great
+greasy-backed one, laying them out together beneath the hanging
+lamp.
+
+"Now then, Mr. Cocksure," said the salesman, "I thought that I
+was out of geese, but before I finish you'll find that there is
+still one left in my shop. You see this little book?"
+
+"Well?"
+
+"That's the list of the folk from whom I buy. D'you see? Well,
+then, here on this page are the country folk, and the numbers
+after their names are where their accounts are in the big ledger.
+Now, then! You see this other page in red ink? Well, that is a
+list of my town suppliers. Now, look at that third name. Just
+read it out to me."
+
+"Mrs. Oakshott, 117, Brixton Road--249," read Holmes.
+
+"Quite so. Now turn that up in the ledger."
+
+Holmes turned to the page indicated. "Here you are, 'Mrs.
+Oakshott, 117, Brixton Road, egg and poultry supplier.'"
+
+"Now, then, what's the last entry?"
+
+"'December 22nd. Twenty-four geese at 7s. 6d.'"
+
+"Quite so. There you are. And underneath?"
+
+"'Sold to Mr. Windigate of the Alpha, at 12s.'"
+
+"What have you to say now?"
+
+Sherlock Holmes looked deeply chagrined. He drew a sovereign from
+his pocket and threw it down upon the slab, turning away with the
+air of a man whose disgust is too deep for words. A few yards off
+he stopped under a lamp-post and laughed in the hearty, noiseless
+fashion which was peculiar to him.
+
+"When you see a man with whiskers of that cut and the 'Pink 'un'
+protruding out of his pocket, you can always draw him by a bet,"
+said he. "I daresay that if I had put 100 pounds down in front of
+him, that man would not have given me such complete information
+as was drawn from him by the idea that he was doing me on a
+wager. Well, Watson, we are, I fancy, nearing the end of our
+quest, and the only point which remains to be determined is
+whether we should go on to this Mrs. Oakshott to-night, or
+whether we should reserve it for to-morrow. It is clear from what
+that surly fellow said that there are others besides ourselves
+who are anxious about the matter, and I should--"
+
+His remarks were suddenly cut short by a loud hubbub which broke
+out from the stall which we had just left. Turning round we saw a
+little rat-faced fellow standing in the centre of the circle of
+yellow light which was thrown by the swinging lamp, while
+Breckinridge, the salesman, framed in the door of his stall, was
+shaking his fists fiercely at the cringing figure.
+
+"I've had enough of you and your geese," he shouted. "I wish you
+were all at the devil together. If you come pestering me any more
+with your silly talk I'll set the dog at you. You bring Mrs.
+Oakshott here and I'll answer her, but what have you to do with
+it? Did I buy the geese off you?"
+
+"No; but one of them was mine all the same," whined the little
+man.
+
+"Well, then, ask Mrs. Oakshott for it."
+
+"She told me to ask you."
+
+"Well, you can ask the King of Proosia, for all I care. I've had
+enough of it. Get out of this!" He rushed fiercely forward, and
+the inquirer flitted away into the darkness.
+
+"Ha! this may save us a visit to Brixton Road," whispered Holmes.
+"Come with me, and we will see what is to be made of this
+fellow." Striding through the scattered knots of people who
+lounged round the flaring stalls, my companion speedily overtook
+the little man and touched him upon the shoulder. He sprang
+round, and I could see in the gas-light that every vestige of
+colour had been driven from his face.
+
+"Who are you, then? What do you want?" he asked in a quavering
+voice.
+
+"You will excuse me," said Holmes blandly, "but I could not help
+overhearing the questions which you put to the salesman just now.
+I think that I could be of assistance to you."
+
+"You? Who are you? How could you know anything of the matter?"
+
+"My name is Sherlock Holmes. It is my business to know what other
+people don't know."
+
+"But you can know nothing of this?"
+
+"Excuse me, I know everything of it. You are endeavouring to
+trace some geese which were sold by Mrs. Oakshott, of Brixton
+Road, to a salesman named Breckinridge, by him in turn to Mr.
+Windigate, of the Alpha, and by him to his club, of which Mr.
+Henry Baker is a member."
+
+"Oh, sir, you are the very man whom I have longed to meet," cried
+the little fellow with outstretched hands and quivering fingers.
+"I can hardly explain to you how interested I am in this matter."
+
+Sherlock Holmes hailed a four-wheeler which was passing. "In that
+case we had better discuss it in a cosy room rather than in this
+wind-swept market-place," said he. "But pray tell me, before we
+go farther, who it is that I have the pleasure of assisting."
+
+The man hesitated for an instant. "My name is John Robinson," he
+answered with a sidelong glance.
+
+"No, no; the real name," said Holmes sweetly. "It is always
+awkward doing business with an alias."
+
+A flush sprang to the white cheeks of the stranger. "Well then,"
+said he, "my real name is James Ryder."
+
+"Precisely so. Head attendant at the Hotel Cosmopolitan. Pray
+step into the cab, and I shall soon be able to tell you
+everything which you would wish to know."
+
+The little man stood glancing from one to the other of us with
+half-frightened, half-hopeful eyes, as one who is not sure
+whether he is on the verge of a windfall or of a catastrophe.
+Then he stepped into the cab, and in half an hour we were back in
+the sitting-room at Baker Street. Nothing had been said during
+our drive, but the high, thin breathing of our new companion, and
+the claspings and unclaspings of his hands, spoke of the nervous
+tension within him.
+
+"Here we are!" said Holmes cheerily as we filed into the room.
+"The fire looks very seasonable in this weather. You look cold,
+Mr. Ryder. Pray take the basket-chair. I will just put on my
+slippers before we settle this little matter of yours. Now, then!
+You want to know what became of those geese?"
+
+"Yes, sir."
+
+"Or rather, I fancy, of that goose. It was one bird, I imagine in
+which you were interested--white, with a black bar across the
+tail."
+
+Ryder quivered with emotion. "Oh, sir," he cried, "can you tell
+me where it went to?"
+
+"It came here."
+
+"Here?"
+
+"Yes, and a most remarkable bird it proved. I don't wonder that
+you should take an interest in it. It laid an egg after it was
+dead--the bonniest, brightest little blue egg that ever was seen.
+I have it here in my museum."
+
+Our visitor staggered to his feet and clutched the mantelpiece
+with his right hand. Holmes unlocked his strong-box and held up
+the blue carbuncle, which shone out like a star, with a cold,
+brilliant, many-pointed radiance. Ryder stood glaring with a
+drawn face, uncertain whether to claim or to disown it.
+
+"The game's up, Ryder," said Holmes quietly. "Hold up, man, or
+you'll be into the fire! Give him an arm back into his chair,
+Watson. He's not got blood enough to go in for felony with
+impunity. Give him a dash of brandy. So! Now he looks a little
+more human. What a shrimp it is, to be sure!"
+
+For a moment he had staggered and nearly fallen, but the brandy
+brought a tinge of colour into his cheeks, and he sat staring
+with frightened eyes at his accuser.
+
+"I have almost every link in my hands, and all the proofs which I
+could possibly need, so there is little which you need tell me.
+Still, that little may as well be cleared up to make the case
+complete. You had heard, Ryder, of this blue stone of the
+Countess of Morcar's?"
+
+"It was Catherine Cusack who told me of it," said he in a
+crackling voice.
+
+"I see--her ladyship's waiting-maid. Well, the temptation of
+sudden wealth so easily acquired was too much for you, as it has
+been for better men before you; but you were not very scrupulous
+in the means you used. It seems to me, Ryder, that there is the
+making of a very pretty villain in you. You knew that this man
+Horner, the plumber, had been concerned in some such matter
+before, and that suspicion would rest the more readily upon him.
+What did you do, then? You made some small job in my lady's
+room--you and your confederate Cusack--and you managed that he
+should be the man sent for. Then, when he had left, you rifled
+the jewel-case, raised the alarm, and had this unfortunate man
+arrested. You then--"
+
+Ryder threw himself down suddenly upon the rug and clutched at my
+companion's knees. "For God's sake, have mercy!" he shrieked.
+"Think of my father! Of my mother! It would break their hearts. I
+never went wrong before! I never will again. I swear it. I'll
+swear it on a Bible. Oh, don't bring it into court! For Christ's
+sake, don't!"
+
+"Get back into your chair!" said Holmes sternly. "It is very well
+to cringe and crawl now, but you thought little enough of this
+poor Horner in the dock for a crime of which he knew nothing."
+
+"I will fly, Mr. Holmes. I will leave the country, sir. Then the
+charge against him will break down."
+
+"Hum! We will talk about that. And now let us hear a true account
+of the next act. How came the stone into the goose, and how came
+the goose into the open market? Tell us the truth, for there lies
+your only hope of safety."
+
+Ryder passed his tongue over his parched lips. "I will tell you
+it just as it happened, sir," said he. "When Horner had been
+arrested, it seemed to me that it would be best for me to get
+away with the stone at once, for I did not know at what moment
+the police might not take it into their heads to search me and my
+room. There was no place about the hotel where it would be safe.
+I went out, as if on some commission, and I made for my sister's
+house. She had married a man named Oakshott, and lived in Brixton
+Road, where she fattened fowls for the market. All the way there
+every man I met seemed to me to be a policeman or a detective;
+and, for all that it was a cold night, the sweat was pouring down
+my face before I came to the Brixton Road. My sister asked me
+what was the matter, and why I was so pale; but I told her that I
+had been upset by the jewel robbery at the hotel. Then I went
+into the back yard and smoked a pipe and wondered what it would
+be best to do.
+
+"I had a friend once called Maudsley, who went to the bad, and
+has just been serving his time in Pentonville. One day he had met
+me, and fell into talk about the ways of thieves, and how they
+could get rid of what they stole. I knew that he would be true to
+me, for I knew one or two things about him; so I made up my mind
+to go right on to Kilburn, where he lived, and take him into my
+confidence. He would show me how to turn the stone into money.
+But how to get to him in safety? I thought of the agonies I had
+gone through in coming from the hotel. I might at any moment be
+seized and searched, and there would be the stone in my waistcoat
+pocket. I was leaning against the wall at the time and looking at
+the geese which were waddling about round my feet, and suddenly
+an idea came into my head which showed me how I could beat the
+best detective that ever lived.
+
+"My sister had told me some weeks before that I might have the
+pick of her geese for a Christmas present, and I knew that she
+was always as good as her word. I would take my goose now, and in
+it I would carry my stone to Kilburn. There was a little shed in
+the yard, and behind this I drove one of the birds--a fine big
+one, white, with a barred tail. I caught it, and prying its bill
+open, I thrust the stone down its throat as far as my finger
+could reach. The bird gave a gulp, and I felt the stone pass
+along its gullet and down into its crop. But the creature flapped
+and struggled, and out came my sister to know what was the
+matter. As I turned to speak to her the brute broke loose and
+fluttered off among the others.
+
+"'Whatever were you doing with that bird, Jem?' says she.
+
+"'Well,' said I, 'you said you'd give me one for Christmas, and I
+was feeling which was the fattest.'
+
+"'Oh,' says she, 'we've set yours aside for you--Jem's bird, we
+call it. It's the big white one over yonder. There's twenty-six
+of them, which makes one for you, and one for us, and two dozen
+for the market.'
+
+"'Thank you, Maggie,' says I; 'but if it is all the same to you,
+I'd rather have that one I was handling just now.'
+
+"'The other is a good three pound heavier,' said she, 'and we
+fattened it expressly for you.'
+
+"'Never mind. I'll have the other, and I'll take it now,' said I.
+
+"'Oh, just as you like,' said she, a little huffed. 'Which is it
+you want, then?'
+
+"'That white one with the barred tail, right in the middle of the
+flock.'
+
+"'Oh, very well. Kill it and take it with you.'
+
+"Well, I did what she said, Mr. Holmes, and I carried the bird
+all the way to Kilburn. I told my pal what I had done, for he was
+a man that it was easy to tell a thing like that to. He laughed
+until he choked, and we got a knife and opened the goose. My
+heart turned to water, for there was no sign of the stone, and I
+knew that some terrible mistake had occurred. I left the bird,
+rushed back to my sister's, and hurried into the back yard. There
+was not a bird to be seen there.
+
+"'Where are they all, Maggie?' I cried.
+
+"'Gone to the dealer's, Jem.'
+
+"'Which dealer's?'
+
+"'Breckinridge, of Covent Garden.'
+
+"'But was there another with a barred tail?' I asked, 'the same
+as the one I chose?'
+
+"'Yes, Jem; there were two barred-tailed ones, and I could never
+tell them apart.'
+
+"Well, then, of course I saw it all, and I ran off as hard as my
+feet would carry me to this man Breckinridge; but he had sold the
+lot at once, and not one word would he tell me as to where they
+had gone. You heard him yourselves to-night. Well, he has always
+answered me like that. My sister thinks that I am going mad.
+Sometimes I think that I am myself. And now--and now I am myself
+a branded thief, without ever having touched the wealth for which
+I sold my character. God help me! God help me!" He burst into
+convulsive sobbing, with his face buried in his hands.
+
+There was a long silence, broken only by his heavy breathing and
+by the measured tapping of Sherlock Holmes' finger-tips upon the
+edge of the table. Then my friend rose and threw open the door.
+
+"Get out!" said he.
+
+"What, sir! Oh, Heaven bless you!"
+
+"No more words. Get out!"
+
+And no more words were needed. There was a rush, a clatter upon
+the stairs, the bang of a door, and the crisp rattle of running
+footfalls from the street.
+
+"After all, Watson," said Holmes, reaching up his hand for his
+clay pipe, "I am not retained by the police to supply their
+deficiencies. If Horner were in danger it would be another thing;
+but this fellow will not appear against him, and the case must
+collapse. I suppose that I am commuting a felony, but it is just
+possible that I am saving a soul. This fellow will not go wrong
+again; he is too terribly frightened. Send him to gaol now, and
+you make him a gaol-bird for life. Besides, it is the season of
+forgiveness. Chance has put in our way a most singular and
+whimsical problem, and its solution is its own reward. If you
+will have the goodness to touch the bell, Doctor, we will begin
+another investigation, in which, also a bird will be the chief
+feature."
+
+
+
+VIII. THE ADVENTURE OF THE SPECKLED BAND
+
+On glancing over my notes of the seventy odd cases in which I
+have during the last eight years studied the methods of my friend
+Sherlock Holmes, I find many tragic, some comic, a large number
+merely strange, but none commonplace; for, working as he did
+rather for the love of his art than for the acquirement of
+wealth, he refused to associate himself with any investigation
+which did not tend towards the unusual, and even the fantastic.
+Of all these varied cases, however, I cannot recall any which
+presented more singular features than that which was associated
+with the well-known Surrey family of the Roylotts of Stoke Moran.
+The events in question occurred in the early days of my
+association with Holmes, when we were sharing rooms as bachelors
+in Baker Street. It is possible that I might have placed them
+upon record before, but a promise of secrecy was made at the
+time, from which I have only been freed during the last month by
+the untimely death of the lady to whom the pledge was given. It
+is perhaps as well that the facts should now come to light, for I
+have reasons to know that there are widespread rumours as to the
+death of Dr. Grimesby Roylott which tend to make the matter even
+more terrible than the truth.
+
+It was early in April in the year '83 that I woke one morning to
+find Sherlock Holmes standing, fully dressed, by the side of my
+bed. He was a late riser, as a rule, and as the clock on the
+mantelpiece showed me that it was only a quarter-past seven, I
+blinked up at him in some surprise, and perhaps just a little
+resentment, for I was myself regular in my habits.
+
+"Very sorry to knock you up, Watson," said he, "but it's the
+common lot this morning. Mrs. Hudson has been knocked up, she
+retorted upon me, and I on you."
+
+"What is it, then--a fire?"
+
+"No; a client. It seems that a young lady has arrived in a
+considerable state of excitement, who insists upon seeing me. She
+is waiting now in the sitting-room. Now, when young ladies wander
+about the metropolis at this hour of the morning, and knock
+sleepy people up out of their beds, I presume that it is
+something very pressing which they have to communicate. Should it
+prove to be an interesting case, you would, I am sure, wish to
+follow it from the outset. I thought, at any rate, that I should
+call you and give you the chance."
+
+"My dear fellow, I would not miss it for anything."
+
+I had no keener pleasure than in following Holmes in his
+professional investigations, and in admiring the rapid
+deductions, as swift as intuitions, and yet always founded on a
+logical basis with which he unravelled the problems which were
+submitted to him. I rapidly threw on my clothes and was ready in
+a few minutes to accompany my friend down to the sitting-room. A
+lady dressed in black and heavily veiled, who had been sitting in
+the window, rose as we entered.
+
+"Good-morning, madam," said Holmes cheerily. "My name is Sherlock
+Holmes. This is my intimate friend and associate, Dr. Watson,
+before whom you can speak as freely as before myself. Ha! I am
+glad to see that Mrs. Hudson has had the good sense to light the
+fire. Pray draw up to it, and I shall order you a cup of hot
+coffee, for I observe that you are shivering."
+
+"It is not cold which makes me shiver," said the woman in a low
+voice, changing her seat as requested.
+
+"What, then?"
+
+"It is fear, Mr. Holmes. It is terror." She raised her veil as
+she spoke, and we could see that she was indeed in a pitiable
+state of agitation, her face all drawn and grey, with restless
+frightened eyes, like those of some hunted animal. Her features
+and figure were those of a woman of thirty, but her hair was shot
+with premature grey, and her expression was weary and haggard.
+Sherlock Holmes ran her over with one of his quick,
+all-comprehensive glances.
+
+"You must not fear," said he soothingly, bending forward and
+patting her forearm. "We shall soon set matters right, I have no
+doubt. You have come in by train this morning, I see."
+
+"You know me, then?"
+
+"No, but I observe the second half of a return ticket in the palm
+of your left glove. You must have started early, and yet you had
+a good drive in a dog-cart, along heavy roads, before you reached
+the station."
+
+The lady gave a violent start and stared in bewilderment at my
+companion.
+
+"There is no mystery, my dear madam," said he, smiling. "The left
+arm of your jacket is spattered with mud in no less than seven
+places. The marks are perfectly fresh. There is no vehicle save a
+dog-cart which throws up mud in that way, and then only when you
+sit on the left-hand side of the driver."
+
+"Whatever your reasons may be, you are perfectly correct," said
+she. "I started from home before six, reached Leatherhead at
+twenty past, and came in by the first train to Waterloo. Sir, I
+can stand this strain no longer; I shall go mad if it continues.
+I have no one to turn to--none, save only one, who cares for me,
+and he, poor fellow, can be of little aid. I have heard of you,
+Mr. Holmes; I have heard of you from Mrs. Farintosh, whom you
+helped in the hour of her sore need. It was from her that I had
+your address. Oh, sir, do you not think that you could help me,
+too, and at least throw a little light through the dense darkness
+which surrounds me? At present it is out of my power to reward
+you for your services, but in a month or six weeks I shall be
+married, with the control of my own income, and then at least you
+shall not find me ungrateful."
+
+Holmes turned to his desk and, unlocking it, drew out a small
+case-book, which he consulted.
+
+"Farintosh," said he. "Ah yes, I recall the case; it was
+concerned with an opal tiara. I think it was before your time,
+Watson. I can only say, madam, that I shall be happy to devote
+the same care to your case as I did to that of your friend. As to
+reward, my profession is its own reward; but you are at liberty
+to defray whatever expenses I may be put to, at the time which
+suits you best. And now I beg that you will lay before us
+everything that may help us in forming an opinion upon the
+matter."
+
+"Alas!" replied our visitor, "the very horror of my situation
+lies in the fact that my fears are so vague, and my suspicions
+depend so entirely upon small points, which might seem trivial to
+another, that even he to whom of all others I have a right to
+look for help and advice looks upon all that I tell him about it
+as the fancies of a nervous woman. He does not say so, but I can
+read it from his soothing answers and averted eyes. But I have
+heard, Mr. Holmes, that you can see deeply into the manifold
+wickedness of the human heart. You may advise me how to walk amid
+the dangers which encompass me."
+
+"I am all attention, madam."
+
+"My name is Helen Stoner, and I am living with my stepfather, who
+is the last survivor of one of the oldest Saxon families in
+England, the Roylotts of Stoke Moran, on the western border of
+Surrey."
+
+Holmes nodded his head. "The name is familiar to me," said he.
+
+"The family was at one time among the richest in England, and the
+estates extended over the borders into Berkshire in the north,
+and Hampshire in the west. In the last century, however, four
+successive heirs were of a dissolute and wasteful disposition,
+and the family ruin was eventually completed by a gambler in the
+days of the Regency. Nothing was left save a few acres of ground,
+and the two-hundred-year-old house, which is itself crushed under
+a heavy mortgage. The last squire dragged out his existence
+there, living the horrible life of an aristocratic pauper; but
+his only son, my stepfather, seeing that he must adapt himself to
+the new conditions, obtained an advance from a relative, which
+enabled him to take a medical degree and went out to Calcutta,
+where, by his professional skill and his force of character, he
+established a large practice. In a fit of anger, however, caused
+by some robberies which had been perpetrated in the house, he
+beat his native butler to death and narrowly escaped a capital
+sentence. As it was, he suffered a long term of imprisonment and
+afterwards returned to England a morose and disappointed man.
+
+"When Dr. Roylott was in India he married my mother, Mrs. Stoner,
+the young widow of Major-General Stoner, of the Bengal Artillery.
+My sister Julia and I were twins, and we were only two years old
+at the time of my mother's re-marriage. She had a considerable
+sum of money--not less than 1000 pounds a year--and this she
+bequeathed to Dr. Roylott entirely while we resided with him,
+with a provision that a certain annual sum should be allowed to
+each of us in the event of our marriage. Shortly after our return
+to England my mother died--she was killed eight years ago in a
+railway accident near Crewe. Dr. Roylott then abandoned his
+attempts to establish himself in practice in London and took us
+to live with him in the old ancestral house at Stoke Moran. The
+money which my mother had left was enough for all our wants, and
+there seemed to be no obstacle to our happiness.
+
+"But a terrible change came over our stepfather about this time.
+Instead of making friends and exchanging visits with our
+neighbours, who had at first been overjoyed to see a Roylott of
+Stoke Moran back in the old family seat, he shut himself up in
+his house and seldom came out save to indulge in ferocious
+quarrels with whoever might cross his path. Violence of temper
+approaching to mania has been hereditary in the men of the
+family, and in my stepfather's case it had, I believe, been
+intensified by his long residence in the tropics. A series of
+disgraceful brawls took place, two of which ended in the
+police-court, until at last he became the terror of the village,
+and the folks would fly at his approach, for he is a man of
+immense strength, and absolutely uncontrollable in his anger.
+
+"Last week he hurled the local blacksmith over a parapet into a
+stream, and it was only by paying over all the money which I
+could gather together that I was able to avert another public
+exposure. He had no friends at all save the wandering gipsies,
+and he would give these vagabonds leave to encamp upon the few
+acres of bramble-covered land which represent the family estate,
+and would accept in return the hospitality of their tents,
+wandering away with them sometimes for weeks on end. He has a
+passion also for Indian animals, which are sent over to him by a
+correspondent, and he has at this moment a cheetah and a baboon,
+which wander freely over his grounds and are feared by the
+villagers almost as much as their master.
+
+"You can imagine from what I say that my poor sister Julia and I
+had no great pleasure in our lives. No servant would stay with
+us, and for a long time we did all the work of the house. She was
+but thirty at the time of her death, and yet her hair had already
+begun to whiten, even as mine has."
+
+"Your sister is dead, then?"
+
+"She died just two years ago, and it is of her death that I wish
+to speak to you. You can understand that, living the life which I
+have described, we were little likely to see anyone of our own
+age and position. We had, however, an aunt, my mother's maiden
+sister, Miss Honoria Westphail, who lives near Harrow, and we
+were occasionally allowed to pay short visits at this lady's
+house. Julia went there at Christmas two years ago, and met there
+a half-pay major of marines, to whom she became engaged. My
+stepfather learned of the engagement when my sister returned and
+offered no objection to the marriage; but within a fortnight of
+the day which had been fixed for the wedding, the terrible event
+occurred which has deprived me of my only companion."
+
+Sherlock Holmes had been leaning back in his chair with his eyes
+closed and his head sunk in a cushion, but he half opened his
+lids now and glanced across at his visitor.
+
+"Pray be precise as to details," said he.
+
+"It is easy for me to be so, for every event of that dreadful
+time is seared into my memory. The manor-house is, as I have
+already said, very old, and only one wing is now inhabited. The
+bedrooms in this wing are on the ground floor, the sitting-rooms
+being in the central block of the buildings. Of these bedrooms
+the first is Dr. Roylott's, the second my sister's, and the third
+my own. There is no communication between them, but they all open
+out into the same corridor. Do I make myself plain?"
+
+"Perfectly so."
+
+"The windows of the three rooms open out upon the lawn. That
+fatal night Dr. Roylott had gone to his room early, though we
+knew that he had not retired to rest, for my sister was troubled
+by the smell of the strong Indian cigars which it was his custom
+to smoke. She left her room, therefore, and came into mine, where
+she sat for some time, chatting about her approaching wedding. At
+eleven o'clock she rose to leave me, but she paused at the door
+and looked back.
+
+"'Tell me, Helen,' said she, 'have you ever heard anyone whistle
+in the dead of the night?'
+
+"'Never,' said I.
+
+"'I suppose that you could not possibly whistle, yourself, in
+your sleep?'
+
+"'Certainly not. But why?'
+
+"'Because during the last few nights I have always, about three
+in the morning, heard a low, clear whistle. I am a light sleeper,
+and it has awakened me. I cannot tell where it came from--perhaps
+from the next room, perhaps from the lawn. I thought that I would
+just ask you whether you had heard it.'
+
+"'No, I have not. It must be those wretched gipsies in the
+plantation.'
+
+"'Very likely. And yet if it were on the lawn, I wonder that you
+did not hear it also.'
+
+"'Ah, but I sleep more heavily than you.'
+
+"'Well, it is of no great consequence, at any rate.' She smiled
+back at me, closed my door, and a few moments later I heard her
+key turn in the lock."
+
+"Indeed," said Holmes. "Was it your custom always to lock
+yourselves in at night?"
+
+"Always."
+
+"And why?"
+
+"I think that I mentioned to you that the doctor kept a cheetah
+and a baboon. We had no feeling of security unless our doors were
+locked."
+
+"Quite so. Pray proceed with your statement."
+
+"I could not sleep that night. A vague feeling of impending
+misfortune impressed me. My sister and I, you will recollect,
+were twins, and you know how subtle are the links which bind two
+souls which are so closely allied. It was a wild night. The wind
+was howling outside, and the rain was beating and splashing
+against the windows. Suddenly, amid all the hubbub of the gale,
+there burst forth the wild scream of a terrified woman. I knew
+that it was my sister's voice. I sprang from my bed, wrapped a
+shawl round me, and rushed into the corridor. As I opened my door
+I seemed to hear a low whistle, such as my sister described, and
+a few moments later a clanging sound, as if a mass of metal had
+fallen. As I ran down the passage, my sister's door was unlocked,
+and revolved slowly upon its hinges. I stared at it
+horror-stricken, not knowing what was about to issue from it. By
+the light of the corridor-lamp I saw my sister appear at the
+opening, her face blanched with terror, her hands groping for
+help, her whole figure swaying to and fro like that of a
+drunkard. I ran to her and threw my arms round her, but at that
+moment her knees seemed to give way and she fell to the ground.
+She writhed as one who is in terrible pain, and her limbs were
+dreadfully convulsed. At first I thought that she had not
+recognised me, but as I bent over her she suddenly shrieked out
+in a voice which I shall never forget, 'Oh, my God! Helen! It was
+the band! The speckled band!' There was something else which she
+would fain have said, and she stabbed with her finger into the
+air in the direction of the doctor's room, but a fresh convulsion
+seized her and choked her words. I rushed out, calling loudly for
+my stepfather, and I met him hastening from his room in his
+dressing-gown. When he reached my sister's side she was
+unconscious, and though he poured brandy down her throat and sent
+for medical aid from the village, all efforts were in vain, for
+she slowly sank and died without having recovered her
+consciousness. Such was the dreadful end of my beloved sister."
+
+"One moment," said Holmes, "are you sure about this whistle and
+metallic sound? Could you swear to it?"
+
+"That was what the county coroner asked me at the inquiry. It is
+my strong impression that I heard it, and yet, among the crash of
+the gale and the creaking of an old house, I may possibly have
+been deceived."
+
+"Was your sister dressed?"
+
+"No, she was in her night-dress. In her right hand was found the
+charred stump of a match, and in her left a match-box."
+
+"Showing that she had struck a light and looked about her when
+the alarm took place. That is important. And what conclusions did
+the coroner come to?"
+
+"He investigated the case with great care, for Dr. Roylott's
+conduct had long been notorious in the county, but he was unable
+to find any satisfactory cause of death. My evidence showed that
+the door had been fastened upon the inner side, and the windows
+were blocked by old-fashioned shutters with broad iron bars,
+which were secured every night. The walls were carefully sounded,
+and were shown to be quite solid all round, and the flooring was
+also thoroughly examined, with the same result. The chimney is
+wide, but is barred up by four large staples. It is certain,
+therefore, that my sister was quite alone when she met her end.
+Besides, there were no marks of any violence upon her."
+
+"How about poison?"
+
+"The doctors examined her for it, but without success."
+
+"What do you think that this unfortunate lady died of, then?"
+
+"It is my belief that she died of pure fear and nervous shock,
+though what it was that frightened her I cannot imagine."
+
+"Were there gipsies in the plantation at the time?"
+
+"Yes, there are nearly always some there."
+
+"Ah, and what did you gather from this allusion to a band--a
+speckled band?"
+
+"Sometimes I have thought that it was merely the wild talk of
+delirium, sometimes that it may have referred to some band of
+people, perhaps to these very gipsies in the plantation. I do not
+know whether the spotted handkerchiefs which so many of them wear
+over their heads might have suggested the strange adjective which
+she used."
+
+Holmes shook his head like a man who is far from being satisfied.
+
+"These are very deep waters," said he; "pray go on with your
+narrative."
+
+"Two years have passed since then, and my life has been until
+lately lonelier than ever. A month ago, however, a dear friend,
+whom I have known for many years, has done me the honour to ask
+my hand in marriage. His name is Armitage--Percy Armitage--the
+second son of Mr. Armitage, of Crane Water, near Reading. My
+stepfather has offered no opposition to the match, and we are to
+be married in the course of the spring. Two days ago some repairs
+were started in the west wing of the building, and my bedroom
+wall has been pierced, so that I have had to move into the
+chamber in which my sister died, and to sleep in the very bed in
+which she slept. Imagine, then, my thrill of terror when last
+night, as I lay awake, thinking over her terrible fate, I
+suddenly heard in the silence of the night the low whistle which
+had been the herald of her own death. I sprang up and lit the
+lamp, but nothing was to be seen in the room. I was too shaken to
+go to bed again, however, so I dressed, and as soon as it was
+daylight I slipped down, got a dog-cart at the Crown Inn, which
+is opposite, and drove to Leatherhead, from whence I have come on
+this morning with the one object of seeing you and asking your
+advice."
+
+"You have done wisely," said my friend. "But have you told me
+all?"
+
+"Yes, all."
+
+"Miss Roylott, you have not. You are screening your stepfather."
+
+"Why, what do you mean?"
+
+For answer Holmes pushed back the frill of black lace which
+fringed the hand that lay upon our visitor's knee. Five little
+livid spots, the marks of four fingers and a thumb, were printed
+upon the white wrist.
+
+"You have been cruelly used," said Holmes.
+
+The lady coloured deeply and covered over her injured wrist. "He
+is a hard man," she said, "and perhaps he hardly knows his own
+strength."
+
+There was a long silence, during which Holmes leaned his chin
+upon his hands and stared into the crackling fire.
+
+"This is a very deep business," he said at last. "There are a
+thousand details which I should desire to know before I decide
+upon our course of action. Yet we have not a moment to lose. If
+we were to come to Stoke Moran to-day, would it be possible for
+us to see over these rooms without the knowledge of your
+stepfather?"
+
+"As it happens, he spoke of coming into town to-day upon some
+most important business. It is probable that he will be away all
+day, and that there would be nothing to disturb you. We have a
+housekeeper now, but she is old and foolish, and I could easily
+get her out of the way."
+
+"Excellent. You are not averse to this trip, Watson?"
+
+"By no means."
+
+"Then we shall both come. What are you going to do yourself?"
+
+"I have one or two things which I would wish to do now that I am
+in town. But I shall return by the twelve o'clock train, so as to
+be there in time for your coming."
+
+"And you may expect us early in the afternoon. I have myself some
+small business matters to attend to. Will you not wait and
+breakfast?"
+
+"No, I must go. My heart is lightened already since I have
+confided my trouble to you. I shall look forward to seeing you
+again this afternoon." She dropped her thick black veil over her
+face and glided from the room.
+
+"And what do you think of it all, Watson?" asked Sherlock Holmes,
+leaning back in his chair.
+
+"It seems to me to be a most dark and sinister business."
+
+"Dark enough and sinister enough."
+
+"Yet if the lady is correct in saying that the flooring and walls
+are sound, and that the door, window, and chimney are impassable,
+then her sister must have been undoubtedly alone when she met her
+mysterious end."
+
+"What becomes, then, of these nocturnal whistles, and what of the
+very peculiar words of the dying woman?"
+
+"I cannot think."
+
+"When you combine the ideas of whistles at night, the presence of
+a band of gipsies who are on intimate terms with this old doctor,
+the fact that we have every reason to believe that the doctor has
+an interest in preventing his stepdaughter's marriage, the dying
+allusion to a band, and, finally, the fact that Miss Helen Stoner
+heard a metallic clang, which might have been caused by one of
+those metal bars that secured the shutters falling back into its
+place, I think that there is good ground to think that the
+mystery may be cleared along those lines."
+
+"But what, then, did the gipsies do?"
+
+"I cannot imagine."
+
+"I see many objections to any such theory."
+
+"And so do I. It is precisely for that reason that we are going
+to Stoke Moran this day. I want to see whether the objections are
+fatal, or if they may be explained away. But what in the name of
+the devil!"
+
+The ejaculation had been drawn from my companion by the fact that
+our door had been suddenly dashed open, and that a huge man had
+framed himself in the aperture. His costume was a peculiar
+mixture of the professional and of the agricultural, having a
+black top-hat, a long frock-coat, and a pair of high gaiters,
+with a hunting-crop swinging in his hand. So tall was he that his
+hat actually brushed the cross bar of the doorway, and his
+breadth seemed to span it across from side to side. A large face,
+seared with a thousand wrinkles, burned yellow with the sun, and
+marked with every evil passion, was turned from one to the other
+of us, while his deep-set, bile-shot eyes, and his high, thin,
+fleshless nose, gave him somewhat the resemblance to a fierce old
+bird of prey.
+
+"Which of you is Holmes?" asked this apparition.
+
+"My name, sir; but you have the advantage of me," said my
+companion quietly.
+
+"I am Dr. Grimesby Roylott, of Stoke Moran."
+
+"Indeed, Doctor," said Holmes blandly. "Pray take a seat."
+
+"I will do nothing of the kind. My stepdaughter has been here. I
+have traced her. What has she been saying to you?"
+
+"It is a little cold for the time of the year," said Holmes.
+
+"What has she been saying to you?" screamed the old man
+furiously.
+
+"But I have heard that the crocuses promise well," continued my
+companion imperturbably.
+
+"Ha! You put me off, do you?" said our new visitor, taking a step
+forward and shaking his hunting-crop. "I know you, you scoundrel!
+I have heard of you before. You are Holmes, the meddler."
+
+My friend smiled.
+
+"Holmes, the busybody!"
+
+His smile broadened.
+
+"Holmes, the Scotland Yard Jack-in-office!"
+
+Holmes chuckled heartily. "Your conversation is most
+entertaining," said he. "When you go out close the door, for
+there is a decided draught."
+
+"I will go when I have said my say. Don't you dare to meddle with
+my affairs. I know that Miss Stoner has been here. I traced her!
+I am a dangerous man to fall foul of! See here." He stepped
+swiftly forward, seized the poker, and bent it into a curve with
+his huge brown hands.
+
+"See that you keep yourself out of my grip," he snarled, and
+hurling the twisted poker into the fireplace he strode out of the
+room.
+
+"He seems a very amiable person," said Holmes, laughing. "I am
+not quite so bulky, but if he had remained I might have shown him
+that my grip was not much more feeble than his own." As he spoke
+he picked up the steel poker and, with a sudden effort,
+straightened it out again.
+
+"Fancy his having the insolence to confound me with the official
+detective force! This incident gives zest to our investigation,
+however, and I only trust that our little friend will not suffer
+from her imprudence in allowing this brute to trace her. And now,
+Watson, we shall order breakfast, and afterwards I shall walk
+down to Doctors' Commons, where I hope to get some data which may
+help us in this matter."
+
+
+It was nearly one o'clock when Sherlock Holmes returned from his
+excursion. He held in his hand a sheet of blue paper, scrawled
+over with notes and figures.
+
+"I have seen the will of the deceased wife," said he. "To
+determine its exact meaning I have been obliged to work out the
+present prices of the investments with which it is concerned. The
+total income, which at the time of the wife's death was little
+short of 1100 pounds, is now, through the fall in agricultural
+prices, not more than 750 pounds. Each daughter can claim an
+income of 250 pounds, in case of marriage. It is evident,
+therefore, that if both girls had married, this beauty would have
+had a mere pittance, while even one of them would cripple him to
+a very serious extent. My morning's work has not been wasted,
+since it has proved that he has the very strongest motives for
+standing in the way of anything of the sort. And now, Watson,
+this is too serious for dawdling, especially as the old man is
+aware that we are interesting ourselves in his affairs; so if you
+are ready, we shall call a cab and drive to Waterloo. I should be
+very much obliged if you would slip your revolver into your
+pocket. An Eley's No. 2 is an excellent argument with gentlemen
+who can twist steel pokers into knots. That and a tooth-brush
+are, I think, all that we need."
+
+At Waterloo we were fortunate in catching a train for
+Leatherhead, where we hired a trap at the station inn and drove
+for four or five miles through the lovely Surrey lanes. It was a
+perfect day, with a bright sun and a few fleecy clouds in the
+heavens. The trees and wayside hedges were just throwing out
+their first green shoots, and the air was full of the pleasant
+smell of the moist earth. To me at least there was a strange
+contrast between the sweet promise of the spring and this
+sinister quest upon which we were engaged. My companion sat in
+the front of the trap, his arms folded, his hat pulled down over
+his eyes, and his chin sunk upon his breast, buried in the
+deepest thought. Suddenly, however, he started, tapped me on the
+shoulder, and pointed over the meadows.
+
+"Look there!" said he.
+
+A heavily timbered park stretched up in a gentle slope,
+thickening into a grove at the highest point. From amid the
+branches there jutted out the grey gables and high roof-tree of a
+very old mansion.
+
+"Stoke Moran?" said he.
+
+"Yes, sir, that be the house of Dr. Grimesby Roylott," remarked
+the driver.
+
+"There is some building going on there," said Holmes; "that is
+where we are going."
+
+"There's the village," said the driver, pointing to a cluster of
+roofs some distance to the left; "but if you want to get to the
+house, you'll find it shorter to get over this stile, and so by
+the foot-path over the fields. There it is, where the lady is
+walking."
+
+"And the lady, I fancy, is Miss Stoner," observed Holmes, shading
+his eyes. "Yes, I think we had better do as you suggest."
+
+We got off, paid our fare, and the trap rattled back on its way
+to Leatherhead.
+
+"I thought it as well," said Holmes as we climbed the stile,
+"that this fellow should think we had come here as architects, or
+on some definite business. It may stop his gossip.
+Good-afternoon, Miss Stoner. You see that we have been as good as
+our word."
+
+Our client of the morning had hurried forward to meet us with a
+face which spoke her joy. "I have been waiting so eagerly for
+you," she cried, shaking hands with us warmly. "All has turned
+out splendidly. Dr. Roylott has gone to town, and it is unlikely
+that he will be back before evening."
+
+"We have had the pleasure of making the doctor's acquaintance,"
+said Holmes, and in a few words he sketched out what had
+occurred. Miss Stoner turned white to the lips as she listened.
+
+"Good heavens!" she cried, "he has followed me, then."
+
+"So it appears."
+
+"He is so cunning that I never know when I am safe from him. What
+will he say when he returns?"
+
+"He must guard himself, for he may find that there is someone
+more cunning than himself upon his track. You must lock yourself
+up from him to-night. If he is violent, we shall take you away to
+your aunt's at Harrow. Now, we must make the best use of our
+time, so kindly take us at once to the rooms which we are to
+examine."
+
+The building was of grey, lichen-blotched stone, with a high
+central portion and two curving wings, like the claws of a crab,
+thrown out on each side. In one of these wings the windows were
+broken and blocked with wooden boards, while the roof was partly
+caved in, a picture of ruin. The central portion was in little
+better repair, but the right-hand block was comparatively modern,
+and the blinds in the windows, with the blue smoke curling up
+from the chimneys, showed that this was where the family resided.
+Some scaffolding had been erected against the end wall, and the
+stone-work had been broken into, but there were no signs of any
+workmen at the moment of our visit. Holmes walked slowly up and
+down the ill-trimmed lawn and examined with deep attention the
+outsides of the windows.
+
+"This, I take it, belongs to the room in which you used to sleep,
+the centre one to your sister's, and the one next to the main
+building to Dr. Roylott's chamber?"
+
+"Exactly so. But I am now sleeping in the middle one."
+
+"Pending the alterations, as I understand. By the way, there does
+not seem to be any very pressing need for repairs at that end
+wall."
+
+"There were none. I believe that it was an excuse to move me from
+my room."
+
+"Ah! that is suggestive. Now, on the other side of this narrow
+wing runs the corridor from which these three rooms open. There
+are windows in it, of course?"
+
+"Yes, but very small ones. Too narrow for anyone to pass
+through."
+
+"As you both locked your doors at night, your rooms were
+unapproachable from that side. Now, would you have the kindness
+to go into your room and bar your shutters?"
+
+Miss Stoner did so, and Holmes, after a careful examination
+through the open window, endeavoured in every way to force the
+shutter open, but without success. There was no slit through
+which a knife could be passed to raise the bar. Then with his
+lens he tested the hinges, but they were of solid iron, built
+firmly into the massive masonry. "Hum!" said he, scratching his
+chin in some perplexity, "my theory certainly presents some
+difficulties. No one could pass these shutters if they were
+bolted. Well, we shall see if the inside throws any light upon
+the matter."
+
+A small side door led into the whitewashed corridor from which
+the three bedrooms opened. Holmes refused to examine the third
+chamber, so we passed at once to the second, that in which Miss
+Stoner was now sleeping, and in which her sister had met with her
+fate. It was a homely little room, with a low ceiling and a
+gaping fireplace, after the fashion of old country-houses. A
+brown chest of drawers stood in one corner, a narrow
+white-counterpaned bed in another, and a dressing-table on the
+left-hand side of the window. These articles, with two small
+wicker-work chairs, made up all the furniture in the room save
+for a square of Wilton carpet in the centre. The boards round and
+the panelling of the walls were of brown, worm-eaten oak, so old
+and discoloured that it may have dated from the original building
+of the house. Holmes drew one of the chairs into a corner and sat
+silent, while his eyes travelled round and round and up and down,
+taking in every detail of the apartment.
+
+"Where does that bell communicate with?" he asked at last
+pointing to a thick bell-rope which hung down beside the bed, the
+tassel actually lying upon the pillow.
+
+"It goes to the housekeeper's room."
+
+"It looks newer than the other things?"
+
+"Yes, it was only put there a couple of years ago."
+
+"Your sister asked for it, I suppose?"
+
+"No, I never heard of her using it. We used always to get what we
+wanted for ourselves."
+
+"Indeed, it seemed unnecessary to put so nice a bell-pull there.
+You will excuse me for a few minutes while I satisfy myself as to
+this floor." He threw himself down upon his face with his lens in
+his hand and crawled swiftly backward and forward, examining
+minutely the cracks between the boards. Then he did the same with
+the wood-work with which the chamber was panelled. Finally he
+walked over to the bed and spent some time in staring at it and
+in running his eye up and down the wall. Finally he took the
+bell-rope in his hand and gave it a brisk tug.
+
+"Why, it's a dummy," said he.
+
+"Won't it ring?"
+
+"No, it is not even attached to a wire. This is very interesting.
+You can see now that it is fastened to a hook just above where
+the little opening for the ventilator is."
+
+"How very absurd! I never noticed that before."
+
+"Very strange!" muttered Holmes, pulling at the rope. "There are
+one or two very singular points about this room. For example,
+what a fool a builder must be to open a ventilator into another
+room, when, with the same trouble, he might have communicated
+with the outside air!"
+
+"That is also quite modern," said the lady.
+
+"Done about the same time as the bell-rope?" remarked Holmes.
+
+"Yes, there were several little changes carried out about that
+time."
+
+"They seem to have been of a most interesting character--dummy
+bell-ropes, and ventilators which do not ventilate. With your
+permission, Miss Stoner, we shall now carry our researches into
+the inner apartment."
+
+Dr. Grimesby Roylott's chamber was larger than that of his
+step-daughter, but was as plainly furnished. A camp-bed, a small
+wooden shelf full of books, mostly of a technical character, an
+armchair beside the bed, a plain wooden chair against the wall, a
+round table, and a large iron safe were the principal things
+which met the eye. Holmes walked slowly round and examined each
+and all of them with the keenest interest.
+
+"What's in here?" he asked, tapping the safe.
+
+"My stepfather's business papers."
+
+"Oh! you have seen inside, then?"
+
+"Only once, some years ago. I remember that it was full of
+papers."
+
+"There isn't a cat in it, for example?"
+
+"No. What a strange idea!"
+
+"Well, look at this!" He took up a small saucer of milk which
+stood on the top of it.
+
+"No; we don't keep a cat. But there is a cheetah and a baboon."
+
+"Ah, yes, of course! Well, a cheetah is just a big cat, and yet a
+saucer of milk does not go very far in satisfying its wants, I
+daresay. There is one point which I should wish to determine." He
+squatted down in front of the wooden chair and examined the seat
+of it with the greatest attention.
+
+"Thank you. That is quite settled," said he, rising and putting
+his lens in his pocket. "Hullo! Here is something interesting!"
+
+The object which had caught his eye was a small dog lash hung on
+one corner of the bed. The lash, however, was curled upon itself
+and tied so as to make a loop of whipcord.
+
+"What do you make of that, Watson?"
+
+"It's a common enough lash. But I don't know why it should be
+tied."
+
+"That is not quite so common, is it? Ah, me! it's a wicked world,
+and when a clever man turns his brains to crime it is the worst
+of all. I think that I have seen enough now, Miss Stoner, and
+with your permission we shall walk out upon the lawn."
+
+I had never seen my friend's face so grim or his brow so dark as
+it was when we turned from the scene of this investigation. We
+had walked several times up and down the lawn, neither Miss
+Stoner nor myself liking to break in upon his thoughts before he
+roused himself from his reverie.
+
+"It is very essential, Miss Stoner," said he, "that you should
+absolutely follow my advice in every respect."
+
+"I shall most certainly do so."
+
+"The matter is too serious for any hesitation. Your life may
+depend upon your compliance."
+
+"I assure you that I am in your hands."
+
+"In the first place, both my friend and I must spend the night in
+your room."
+
+Both Miss Stoner and I gazed at him in astonishment.
+
+"Yes, it must be so. Let me explain. I believe that that is the
+village inn over there?"
+
+"Yes, that is the Crown."
+
+"Very good. Your windows would be visible from there?"
+
+"Certainly."
+
+"You must confine yourself to your room, on pretence of a
+headache, when your stepfather comes back. Then when you hear him
+retire for the night, you must open the shutters of your window,
+undo the hasp, put your lamp there as a signal to us, and then
+withdraw quietly with everything which you are likely to want
+into the room which you used to occupy. I have no doubt that, in
+spite of the repairs, you could manage there for one night."
+
+"Oh, yes, easily."
+
+"The rest you will leave in our hands."
+
+"But what will you do?"
+
+"We shall spend the night in your room, and we shall investigate
+the cause of this noise which has disturbed you."
+
+"I believe, Mr. Holmes, that you have already made up your mind,"
+said Miss Stoner, laying her hand upon my companion's sleeve.
+
+"Perhaps I have."
+
+"Then, for pity's sake, tell me what was the cause of my sister's
+death."
+
+"I should prefer to have clearer proofs before I speak."
+
+"You can at least tell me whether my own thought is correct, and
+if she died from some sudden fright."
+
+"No, I do not think so. I think that there was probably some more
+tangible cause. And now, Miss Stoner, we must leave you for if
+Dr. Roylott returned and saw us our journey would be in vain.
+Good-bye, and be brave, for if you will do what I have told you,
+you may rest assured that we shall soon drive away the dangers
+that threaten you."
+
+Sherlock Holmes and I had no difficulty in engaging a bedroom and
+sitting-room at the Crown Inn. They were on the upper floor, and
+from our window we could command a view of the avenue gate, and
+of the inhabited wing of Stoke Moran Manor House. At dusk we saw
+Dr. Grimesby Roylott drive past, his huge form looming up beside
+the little figure of the lad who drove him. The boy had some
+slight difficulty in undoing the heavy iron gates, and we heard
+the hoarse roar of the doctor's voice and saw the fury with which
+he shook his clinched fists at him. The trap drove on, and a few
+minutes later we saw a sudden light spring up among the trees as
+the lamp was lit in one of the sitting-rooms.
+
+"Do you know, Watson," said Holmes as we sat together in the
+gathering darkness, "I have really some scruples as to taking you
+to-night. There is a distinct element of danger."
+
+"Can I be of assistance?"
+
+"Your presence might be invaluable."
+
+"Then I shall certainly come."
+
+"It is very kind of you."
+
+"You speak of danger. You have evidently seen more in these rooms
+than was visible to me."
+
+"No, but I fancy that I may have deduced a little more. I imagine
+that you saw all that I did."
+
+"I saw nothing remarkable save the bell-rope, and what purpose
+that could answer I confess is more than I can imagine."
+
+"You saw the ventilator, too?"
+
+"Yes, but I do not think that it is such a very unusual thing to
+have a small opening between two rooms. It was so small that a
+rat could hardly pass through."
+
+"I knew that we should find a ventilator before ever we came to
+Stoke Moran."
+
+"My dear Holmes!"
+
+"Oh, yes, I did. You remember in her statement she said that her
+sister could smell Dr. Roylott's cigar. Now, of course that
+suggested at once that there must be a communication between the
+two rooms. It could only be a small one, or it would have been
+remarked upon at the coroner's inquiry. I deduced a ventilator."
+
+"But what harm can there be in that?"
+
+"Well, there is at least a curious coincidence of dates. A
+ventilator is made, a cord is hung, and a lady who sleeps in the
+bed dies. Does not that strike you?"
+
+"I cannot as yet see any connection."
+
+"Did you observe anything very peculiar about that bed?"
+
+"No."
+
+"It was clamped to the floor. Did you ever see a bed fastened
+like that before?"
+
+"I cannot say that I have."
+
+"The lady could not move her bed. It must always be in the same
+relative position to the ventilator and to the rope--or so we may
+call it, since it was clearly never meant for a bell-pull."
+
+"Holmes," I cried, "I seem to see dimly what you are hinting at.
+We are only just in time to prevent some subtle and horrible
+crime."
+
+"Subtle enough and horrible enough. When a doctor does go wrong
+he is the first of criminals. He has nerve and he has knowledge.
+Palmer and Pritchard were among the heads of their profession.
+This man strikes even deeper, but I think, Watson, that we shall
+be able to strike deeper still. But we shall have horrors enough
+before the night is over; for goodness' sake let us have a quiet
+pipe and turn our minds for a few hours to something more
+cheerful."
+
+
+About nine o'clock the light among the trees was extinguished,
+and all was dark in the direction of the Manor House. Two hours
+passed slowly away, and then, suddenly, just at the stroke of
+eleven, a single bright light shone out right in front of us.
+
+"That is our signal," said Holmes, springing to his feet; "it
+comes from the middle window."
+
+As we passed out he exchanged a few words with the landlord,
+explaining that we were going on a late visit to an acquaintance,
+and that it was possible that we might spend the night there. A
+moment later we were out on the dark road, a chill wind blowing
+in our faces, and one yellow light twinkling in front of us
+through the gloom to guide us on our sombre errand.
+
+There was little difficulty in entering the grounds, for
+unrepaired breaches gaped in the old park wall. Making our way
+among the trees, we reached the lawn, crossed it, and were about
+to enter through the window when out from a clump of laurel
+bushes there darted what seemed to be a hideous and distorted
+child, who threw itself upon the grass with writhing limbs and
+then ran swiftly across the lawn into the darkness.
+
+"My God!" I whispered; "did you see it?"
+
+Holmes was for the moment as startled as I. His hand closed like
+a vice upon my wrist in his agitation. Then he broke into a low
+laugh and put his lips to my ear.
+
+"It is a nice household," he murmured. "That is the baboon."
+
+I had forgotten the strange pets which the doctor affected. There
+was a cheetah, too; perhaps we might find it upon our shoulders
+at any moment. I confess that I felt easier in my mind when,
+after following Holmes' example and slipping off my shoes, I
+found myself inside the bedroom. My companion noiselessly closed
+the shutters, moved the lamp onto the table, and cast his eyes
+round the room. All was as we had seen it in the daytime. Then
+creeping up to me and making a trumpet of his hand, he whispered
+into my ear again so gently that it was all that I could do to
+distinguish the words:
+
+"The least sound would be fatal to our plans."
+
+I nodded to show that I had heard.
+
+"We must sit without light. He would see it through the
+ventilator."
+
+I nodded again.
+
+"Do not go asleep; your very life may depend upon it. Have your
+pistol ready in case we should need it. I will sit on the side of
+the bed, and you in that chair."
+
+I took out my revolver and laid it on the corner of the table.
+
+Holmes had brought up a long thin cane, and this he placed upon
+the bed beside him. By it he laid the box of matches and the
+stump of a candle. Then he turned down the lamp, and we were left
+in darkness.
+
+How shall I ever forget that dreadful vigil? I could not hear a
+sound, not even the drawing of a breath, and yet I knew that my
+companion sat open-eyed, within a few feet of me, in the same
+state of nervous tension in which I was myself. The shutters cut
+off the least ray of light, and we waited in absolute darkness.
+
+From outside came the occasional cry of a night-bird, and once at
+our very window a long drawn catlike whine, which told us that
+the cheetah was indeed at liberty. Far away we could hear the
+deep tones of the parish clock, which boomed out every quarter of
+an hour. How long they seemed, those quarters! Twelve struck, and
+one and two and three, and still we sat waiting silently for
+whatever might befall.
+
+Suddenly there was the momentary gleam of a light up in the
+direction of the ventilator, which vanished immediately, but was
+succeeded by a strong smell of burning oil and heated metal.
+Someone in the next room had lit a dark-lantern. I heard a gentle
+sound of movement, and then all was silent once more, though the
+smell grew stronger. For half an hour I sat with straining ears.
+Then suddenly another sound became audible--a very gentle,
+soothing sound, like that of a small jet of steam escaping
+continually from a kettle. The instant that we heard it, Holmes
+sprang from the bed, struck a match, and lashed furiously with
+his cane at the bell-pull.
+
+"You see it, Watson?" he yelled. "You see it?"
+
+But I saw nothing. At the moment when Holmes struck the light I
+heard a low, clear whistle, but the sudden glare flashing into my
+weary eyes made it impossible for me to tell what it was at which
+my friend lashed so savagely. I could, however, see that his face
+was deadly pale and filled with horror and loathing. He had
+ceased to strike and was gazing up at the ventilator when
+suddenly there broke from the silence of the night the most
+horrible cry to which I have ever listened. It swelled up louder
+and louder, a hoarse yell of pain and fear and anger all mingled
+in the one dreadful shriek. They say that away down in the
+village, and even in the distant parsonage, that cry raised the
+sleepers from their beds. It struck cold to our hearts, and I
+stood gazing at Holmes, and he at me, until the last echoes of it
+had died away into the silence from which it rose.
+
+"What can it mean?" I gasped.
+
+"It means that it is all over," Holmes answered. "And perhaps,
+after all, it is for the best. Take your pistol, and we will
+enter Dr. Roylott's room."
+
+With a grave face he lit the lamp and led the way down the
+corridor. Twice he struck at the chamber door without any reply
+from within. Then he turned the handle and entered, I at his
+heels, with the cocked pistol in my hand.
+
+It was a singular sight which met our eyes. On the table stood a
+dark-lantern with the shutter half open, throwing a brilliant
+beam of light upon the iron safe, the door of which was ajar.
+Beside this table, on the wooden chair, sat Dr. Grimesby Roylott
+clad in a long grey dressing-gown, his bare ankles protruding
+beneath, and his feet thrust into red heelless Turkish slippers.
+Across his lap lay the short stock with the long lash which we
+had noticed during the day. His chin was cocked upward and his
+eyes were fixed in a dreadful, rigid stare at the corner of the
+ceiling. Round his brow he had a peculiar yellow band, with
+brownish speckles, which seemed to be bound tightly round his
+head. As we entered he made neither sound nor motion.
+
+"The band! the speckled band!" whispered Holmes.
+
+I took a step forward. In an instant his strange headgear began
+to move, and there reared itself from among his hair the squat
+diamond-shaped head and puffed neck of a loathsome serpent.
+
+"It is a swamp adder!" cried Holmes; "the deadliest snake in
+India. He has died within ten seconds of being bitten. Violence
+does, in truth, recoil upon the violent, and the schemer falls
+into the pit which he digs for another. Let us thrust this
+creature back into its den, and we can then remove Miss Stoner to
+some place of shelter and let the county police know what has
+happened."
+
+As he spoke he drew the dog-whip swiftly from the dead man's lap,
+and throwing the noose round the reptile's neck he drew it from
+its horrid perch and, carrying it at arm's length, threw it into
+the iron safe, which he closed upon it.
+
+Such are the true facts of the death of Dr. Grimesby Roylott, of
+Stoke Moran. It is not necessary that I should prolong a
+narrative which has already run to too great a length by telling
+how we broke the sad news to the terrified girl, how we conveyed
+her by the morning train to the care of her good aunt at Harrow,
+of how the slow process of official inquiry came to the
+conclusion that the doctor met his fate while indiscreetly
+playing with a dangerous pet. The little which I had yet to learn
+of the case was told me by Sherlock Holmes as we travelled back
+next day.
+
+"I had," said he, "come to an entirely erroneous conclusion which
+shows, my dear Watson, how dangerous it always is to reason from
+insufficient data. The presence of the gipsies, and the use of
+the word 'band,' which was used by the poor girl, no doubt, to
+explain the appearance which she had caught a hurried glimpse of
+by the light of her match, were sufficient to put me upon an
+entirely wrong scent. I can only claim the merit that I instantly
+reconsidered my position when, however, it became clear to me
+that whatever danger threatened an occupant of the room could not
+come either from the window or the door. My attention was
+speedily drawn, as I have already remarked to you, to this
+ventilator, and to the bell-rope which hung down to the bed. The
+discovery that this was a dummy, and that the bed was clamped to
+the floor, instantly gave rise to the suspicion that the rope was
+there as a bridge for something passing through the hole and
+coming to the bed. The idea of a snake instantly occurred to me,
+and when I coupled it with my knowledge that the doctor was
+furnished with a supply of creatures from India, I felt that I
+was probably on the right track. The idea of using a form of
+poison which could not possibly be discovered by any chemical
+test was just such a one as would occur to a clever and ruthless
+man who had had an Eastern training. The rapidity with which such
+a poison would take effect would also, from his point of view, be
+an advantage. It would be a sharp-eyed coroner, indeed, who could
+distinguish the two little dark punctures which would show where
+the poison fangs had done their work. Then I thought of the
+whistle. Of course he must recall the snake before the morning
+light revealed it to the victim. He had trained it, probably by
+the use of the milk which we saw, to return to him when summoned.
+He would put it through this ventilator at the hour that he
+thought best, with the certainty that it would crawl down the
+rope and land on the bed. It might or might not bite the
+occupant, perhaps she might escape every night for a week, but
+sooner or later she must fall a victim.
+
+"I had come to these conclusions before ever I had entered his
+room. An inspection of his chair showed me that he had been in
+the habit of standing on it, which of course would be necessary
+in order that he should reach the ventilator. The sight of the
+safe, the saucer of milk, and the loop of whipcord were enough to
+finally dispel any doubts which may have remained. The metallic
+clang heard by Miss Stoner was obviously caused by her stepfather
+hastily closing the door of his safe upon its terrible occupant.
+Having once made up my mind, you know the steps which I took in
+order to put the matter to the proof. I heard the creature hiss
+as I have no doubt that you did also, and I instantly lit the
+light and attacked it."
+
+"With the result of driving it through the ventilator."
+
+"And also with the result of causing it to turn upon its master
+at the other side. Some of the blows of my cane came home and
+roused its snakish temper, so that it flew upon the first person
+it saw. In this way I am no doubt indirectly responsible for Dr.
+Grimesby Roylott's death, and I cannot say that it is likely to
+weigh very heavily upon my conscience."
+
+
+
+IX. THE ADVENTURE OF THE ENGINEER'S THUMB
+
+Of all the problems which have been submitted to my friend, Mr.
+Sherlock Holmes, for solution during the years of our intimacy,
+there were only two which I was the means of introducing to his
+notice--that of Mr. Hatherley's thumb, and that of Colonel
+Warburton's madness. Of these the latter may have afforded a
+finer field for an acute and original observer, but the other was
+so strange in its inception and so dramatic in its details that
+it may be the more worthy of being placed upon record, even if it
+gave my friend fewer openings for those deductive methods of
+reasoning by which he achieved such remarkable results. The story
+has, I believe, been told more than once in the newspapers, but,
+like all such narratives, its effect is much less striking when
+set forth en bloc in a single half-column of print than when the
+facts slowly evolve before your own eyes, and the mystery clears
+gradually away as each new discovery furnishes a step which leads
+on to the complete truth. At the time the circumstances made a
+deep impression upon me, and the lapse of two years has hardly
+served to weaken the effect.
+
+It was in the summer of '89, not long after my marriage, that the
+events occurred which I am now about to summarise. I had returned
+to civil practice and had finally abandoned Holmes in his Baker
+Street rooms, although I continually visited him and occasionally
+even persuaded him to forgo his Bohemian habits so far as to come
+and visit us. My practice had steadily increased, and as I
+happened to live at no very great distance from Paddington
+Station, I got a few patients from among the officials. One of
+these, whom I had cured of a painful and lingering disease, was
+never weary of advertising my virtues and of endeavouring to send
+me on every sufferer over whom he might have any influence.
+
+One morning, at a little before seven o'clock, I was awakened by
+the maid tapping at the door to announce that two men had come
+from Paddington and were waiting in the consulting-room. I
+dressed hurriedly, for I knew by experience that railway cases
+were seldom trivial, and hastened downstairs. As I descended, my
+old ally, the guard, came out of the room and closed the door
+tightly behind him.
+
+"I've got him here," he whispered, jerking his thumb over his
+shoulder; "he's all right."
+
+"What is it, then?" I asked, for his manner suggested that it was
+some strange creature which he had caged up in my room.
+
+"It's a new patient," he whispered. "I thought I'd bring him
+round myself; then he couldn't slip away. There he is, all safe
+and sound. I must go now, Doctor; I have my dooties, just the
+same as you." And off he went, this trusty tout, without even
+giving me time to thank him.
+
+I entered my consulting-room and found a gentleman seated by the
+table. He was quietly dressed in a suit of heather tweed with a
+soft cloth cap which he had laid down upon my books. Round one of
+his hands he had a handkerchief wrapped, which was mottled all
+over with bloodstains. He was young, not more than
+five-and-twenty, I should say, with a strong, masculine face; but
+he was exceedingly pale and gave me the impression of a man who
+was suffering from some strong agitation, which it took all his
+strength of mind to control.
+
+"I am sorry to knock you up so early, Doctor," said he, "but I
+have had a very serious accident during the night. I came in by
+train this morning, and on inquiring at Paddington as to where I
+might find a doctor, a worthy fellow very kindly escorted me
+here. I gave the maid a card, but I see that she has left it upon
+the side-table."
+
+I took it up and glanced at it. "Mr. Victor Hatherley, hydraulic
+engineer, 16A, Victoria Street (3rd floor)." That was the name,
+style, and abode of my morning visitor. "I regret that I have
+kept you waiting," said I, sitting down in my library-chair. "You
+are fresh from a night journey, I understand, which is in itself
+a monotonous occupation."
+
+"Oh, my night could not be called monotonous," said he, and
+laughed. He laughed very heartily, with a high, ringing note,
+leaning back in his chair and shaking his sides. All my medical
+instincts rose up against that laugh.
+
+"Stop it!" I cried; "pull yourself together!" and I poured out
+some water from a caraffe.
+
+It was useless, however. He was off in one of those hysterical
+outbursts which come upon a strong nature when some great crisis
+is over and gone. Presently he came to himself once more, very
+weary and pale-looking.
+
+"I have been making a fool of myself," he gasped.
+
+"Not at all. Drink this." I dashed some brandy into the water,
+and the colour began to come back to his bloodless cheeks.
+
+"That's better!" said he. "And now, Doctor, perhaps you would
+kindly attend to my thumb, or rather to the place where my thumb
+used to be."
+
+He unwound the handkerchief and held out his hand. It gave even
+my hardened nerves a shudder to look at it. There were four
+protruding fingers and a horrid red, spongy surface where the
+thumb should have been. It had been hacked or torn right out from
+the roots.
+
+"Good heavens!" I cried, "this is a terrible injury. It must have
+bled considerably."
+
+"Yes, it did. I fainted when it was done, and I think that I must
+have been senseless for a long time. When I came to I found that
+it was still bleeding, so I tied one end of my handkerchief very
+tightly round the wrist and braced it up with a twig."
+
+"Excellent! You should have been a surgeon."
+
+"It is a question of hydraulics, you see, and came within my own
+province."
+
+"This has been done," said I, examining the wound, "by a very
+heavy and sharp instrument."
+
+"A thing like a cleaver," said he.
+
+"An accident, I presume?"
+
+"By no means."
+
+"What! a murderous attack?"
+
+"Very murderous indeed."
+
+"You horrify me."
+
+I sponged the wound, cleaned it, dressed it, and finally covered
+it over with cotton wadding and carbolised bandages. He lay back
+without wincing, though he bit his lip from time to time.
+
+"How is that?" I asked when I had finished.
+
+"Capital! Between your brandy and your bandage, I feel a new man.
+I was very weak, but I have had a good deal to go through."
+
+"Perhaps you had better not speak of the matter. It is evidently
+trying to your nerves."
+
+"Oh, no, not now. I shall have to tell my tale to the police;
+but, between ourselves, if it were not for the convincing
+evidence of this wound of mine, I should be surprised if they
+believed my statement, for it is a very extraordinary one, and I
+have not much in the way of proof with which to back it up; and,
+even if they believe me, the clues which I can give them are so
+vague that it is a question whether justice will be done."
+
+"Ha!" cried I, "if it is anything in the nature of a problem
+which you desire to see solved, I should strongly recommend you
+to come to my friend, Mr. Sherlock Holmes, before you go to the
+official police."
+
+"Oh, I have heard of that fellow," answered my visitor, "and I
+should be very glad if he would take the matter up, though of
+course I must use the official police as well. Would you give me
+an introduction to him?"
+
+"I'll do better. I'll take you round to him myself."
+
+"I should be immensely obliged to you."
+
+"We'll call a cab and go together. We shall just be in time to
+have a little breakfast with him. Do you feel equal to it?"
+
+"Yes; I shall not feel easy until I have told my story."
+
+"Then my servant will call a cab, and I shall be with you in an
+instant." I rushed upstairs, explained the matter shortly to my
+wife, and in five minutes was inside a hansom, driving with my
+new acquaintance to Baker Street.
+
+Sherlock Holmes was, as I expected, lounging about his
+sitting-room in his dressing-gown, reading the agony column of The
+Times and smoking his before-breakfast pipe, which was composed
+of all the plugs and dottles left from his smokes of the day
+before, all carefully dried and collected on the corner of the
+mantelpiece. He received us in his quietly genial fashion,
+ordered fresh rashers and eggs, and joined us in a hearty meal.
+When it was concluded he settled our new acquaintance upon the
+sofa, placed a pillow beneath his head, and laid a glass of
+brandy and water within his reach.
+
+"It is easy to see that your experience has been no common one,
+Mr. Hatherley," said he. "Pray, lie down there and make yourself
+absolutely at home. Tell us what you can, but stop when you are
+tired and keep up your strength with a little stimulant."
+
+"Thank you," said my patient, "but I have felt another man since
+the doctor bandaged me, and I think that your breakfast has
+completed the cure. I shall take up as little of your valuable
+time as possible, so I shall start at once upon my peculiar
+experiences."
+
+Holmes sat in his big armchair with the weary, heavy-lidded
+expression which veiled his keen and eager nature, while I sat
+opposite to him, and we listened in silence to the strange story
+which our visitor detailed to us.
+
+"You must know," said he, "that I am an orphan and a bachelor,
+residing alone in lodgings in London. By profession I am a
+hydraulic engineer, and I have had considerable experience of my
+work during the seven years that I was apprenticed to Venner &
+Matheson, the well-known firm, of Greenwich. Two years ago,
+having served my time, and having also come into a fair sum of
+money through my poor father's death, I determined to start in
+business for myself and took professional chambers in Victoria
+Street.
+
+"I suppose that everyone finds his first independent start in
+business a dreary experience. To me it has been exceptionally so.
+During two years I have had three consultations and one small
+job, and that is absolutely all that my profession has brought
+me. My gross takings amount to 27 pounds 10s. Every day, from
+nine in the morning until four in the afternoon, I waited in my
+little den, until at last my heart began to sink, and I came to
+believe that I should never have any practice at all.
+
+"Yesterday, however, just as I was thinking of leaving the
+office, my clerk entered to say there was a gentleman waiting who
+wished to see me upon business. He brought up a card, too, with
+the name of 'Colonel Lysander Stark' engraved upon it. Close at
+his heels came the colonel himself, a man rather over the middle
+size, but of an exceeding thinness. I do not think that I have
+ever seen so thin a man. His whole face sharpened away into nose
+and chin, and the skin of his cheeks was drawn quite tense over
+his outstanding bones. Yet this emaciation seemed to be his
+natural habit, and due to no disease, for his eye was bright, his
+step brisk, and his bearing assured. He was plainly but neatly
+dressed, and his age, I should judge, would be nearer forty than
+thirty.
+
+"'Mr. Hatherley?' said he, with something of a German accent.
+'You have been recommended to me, Mr. Hatherley, as being a man
+who is not only proficient in his profession but is also discreet
+and capable of preserving a secret.'
+
+"I bowed, feeling as flattered as any young man would at such an
+address. 'May I ask who it was who gave me so good a character?'
+
+"'Well, perhaps it is better that I should not tell you that just
+at this moment. I have it from the same source that you are both
+an orphan and a bachelor and are residing alone in London.'
+
+"'That is quite correct,' I answered; 'but you will excuse me if
+I say that I cannot see how all this bears upon my professional
+qualifications. I understand that it was on a professional matter
+that you wished to speak to me?'
+
+"'Undoubtedly so. But you will find that all I say is really to
+the point. I have a professional commission for you, but absolute
+secrecy is quite essential--absolute secrecy, you understand, and
+of course we may expect that more from a man who is alone than
+from one who lives in the bosom of his family.'
+
+"'If I promise to keep a secret,' said I, 'you may absolutely
+depend upon my doing so.'
+
+"He looked very hard at me as I spoke, and it seemed to me that I
+had never seen so suspicious and questioning an eye.
+
+"'Do you promise, then?' said he at last.
+
+"'Yes, I promise.'
+
+"'Absolute and complete silence before, during, and after? No
+reference to the matter at all, either in word or writing?'
+
+"'I have already given you my word.'
+
+"'Very good.' He suddenly sprang up, and darting like lightning
+across the room he flung open the door. The passage outside was
+empty.
+
+"'That's all right,' said he, coming back. 'I know that clerks are
+sometimes curious as to their master's affairs. Now we can talk
+in safety.' He drew up his chair very close to mine and began to
+stare at me again with the same questioning and thoughtful look.
+
+"A feeling of repulsion, and of something akin to fear had begun
+to rise within me at the strange antics of this fleshless man.
+Even my dread of losing a client could not restrain me from
+showing my impatience.
+
+"'I beg that you will state your business, sir,' said I; 'my time
+is of value.' Heaven forgive me for that last sentence, but the
+words came to my lips.
+
+"'How would fifty guineas for a night's work suit you?' he asked.
+
+"'Most admirably.'
+
+"'I say a night's work, but an hour's would be nearer the mark. I
+simply want your opinion about a hydraulic stamping machine which
+has got out of gear. If you show us what is wrong we shall soon
+set it right ourselves. What do you think of such a commission as
+that?'
+
+"'The work appears to be light and the pay munificent.'
+
+"'Precisely so. We shall want you to come to-night by the last
+train.'
+
+"'Where to?'
+
+"'To Eyford, in Berkshire. It is a little place near the borders
+of Oxfordshire, and within seven miles of Reading. There is a
+train from Paddington which would bring you there at about
+11:15.'
+
+"'Very good.'
+
+"'I shall come down in a carriage to meet you.'
+
+"'There is a drive, then?'
+
+"'Yes, our little place is quite out in the country. It is a good
+seven miles from Eyford Station.'
+
+"'Then we can hardly get there before midnight. I suppose there
+would be no chance of a train back. I should be compelled to stop
+the night.'
+
+"'Yes, we could easily give you a shake-down.'
+
+"'That is very awkward. Could I not come at some more convenient
+hour?'
+
+"'We have judged it best that you should come late. It is to
+recompense you for any inconvenience that we are paying to you, a
+young and unknown man, a fee which would buy an opinion from the
+very heads of your profession. Still, of course, if you would
+like to draw out of the business, there is plenty of time to do
+so.'
+
+"I thought of the fifty guineas, and of how very useful they
+would be to me. 'Not at all,' said I, 'I shall be very happy to
+accommodate myself to your wishes. I should like, however, to
+understand a little more clearly what it is that you wish me to
+do.'
+
+"'Quite so. It is very natural that the pledge of secrecy which
+we have exacted from you should have aroused your curiosity. I
+have no wish to commit you to anything without your having it all
+laid before you. I suppose that we are absolutely safe from
+eavesdroppers?'
+
+"'Entirely.'
+
+"'Then the matter stands thus. You are probably aware that
+fuller's-earth is a valuable product, and that it is only found
+in one or two places in England?'
+
+"'I have heard so.'
+
+"'Some little time ago I bought a small place--a very small
+place--within ten miles of Reading. I was fortunate enough to
+discover that there was a deposit of fuller's-earth in one of my
+fields. On examining it, however, I found that this deposit was a
+comparatively small one, and that it formed a link between two
+very much larger ones upon the right and left--both of them,
+however, in the grounds of my neighbours. These good people were
+absolutely ignorant that their land contained that which was
+quite as valuable as a gold-mine. Naturally, it was to my
+interest to buy their land before they discovered its true value,
+but unfortunately I had no capital by which I could do this. I
+took a few of my friends into the secret, however, and they
+suggested that we should quietly and secretly work our own little
+deposit and that in this way we should earn the money which would
+enable us to buy the neighbouring fields. This we have now been
+doing for some time, and in order to help us in our operations we
+erected a hydraulic press. This press, as I have already
+explained, has got out of order, and we wish your advice upon the
+subject. We guard our secret very jealously, however, and if it
+once became known that we had hydraulic engineers coming to our
+little house, it would soon rouse inquiry, and then, if the facts
+came out, it would be good-bye to any chance of getting these
+fields and carrying out our plans. That is why I have made you
+promise me that you will not tell a human being that you are
+going to Eyford to-night. I hope that I make it all plain?'
+
+"'I quite follow you,' said I. 'The only point which I could not
+quite understand was what use you could make of a hydraulic press
+in excavating fuller's-earth, which, as I understand, is dug out
+like gravel from a pit.'
+
+"'Ah!' said he carelessly, 'we have our own process. We compress
+the earth into bricks, so as to remove them without revealing
+what they are. But that is a mere detail. I have taken you fully
+into my confidence now, Mr. Hatherley, and I have shown you how I
+trust you.' He rose as he spoke. 'I shall expect you, then, at
+Eyford at 11:15.'
+
+"'I shall certainly be there.'
+
+"'And not a word to a soul.' He looked at me with a last long,
+questioning gaze, and then, pressing my hand in a cold, dank
+grasp, he hurried from the room.
+
+"Well, when I came to think it all over in cool blood I was very
+much astonished, as you may both think, at this sudden commission
+which had been intrusted to me. On the one hand, of course, I was
+glad, for the fee was at least tenfold what I should have asked
+had I set a price upon my own services, and it was possible that
+this order might lead to other ones. On the other hand, the face
+and manner of my patron had made an unpleasant impression upon
+me, and I could not think that his explanation of the
+fuller's-earth was sufficient to explain the necessity for my
+coming at midnight, and his extreme anxiety lest I should tell
+anyone of my errand. However, I threw all fears to the winds, ate
+a hearty supper, drove to Paddington, and started off, having
+obeyed to the letter the injunction as to holding my tongue.
+
+"At Reading I had to change not only my carriage but my station.
+However, I was in time for the last train to Eyford, and I
+reached the little dim-lit station after eleven o'clock. I was the
+only passenger who got out there, and there was no one upon the
+platform save a single sleepy porter with a lantern. As I passed
+out through the wicket gate, however, I found my acquaintance of
+the morning waiting in the shadow upon the other side. Without a
+word he grasped my arm and hurried me into a carriage, the door
+of which was standing open. He drew up the windows on either
+side, tapped on the wood-work, and away we went as fast as the
+horse could go."
+
+"One horse?" interjected Holmes.
+
+"Yes, only one."
+
+"Did you observe the colour?"
+
+"Yes, I saw it by the side-lights when I was stepping into the
+carriage. It was a chestnut."
+
+"Tired-looking or fresh?"
+
+"Oh, fresh and glossy."
+
+"Thank you. I am sorry to have interrupted you. Pray continue
+your most interesting statement."
+
+"Away we went then, and we drove for at least an hour. Colonel
+Lysander Stark had said that it was only seven miles, but I
+should think, from the rate that we seemed to go, and from the
+time that we took, that it must have been nearer twelve. He sat
+at my side in silence all the time, and I was aware, more than
+once when I glanced in his direction, that he was looking at me
+with great intensity. The country roads seem to be not very good
+in that part of the world, for we lurched and jolted terribly. I
+tried to look out of the windows to see something of where we
+were, but they were made of frosted glass, and I could make out
+nothing save the occasional bright blur of a passing light. Now
+and then I hazarded some remark to break the monotony of the
+journey, but the colonel answered only in monosyllables, and the
+conversation soon flagged. At last, however, the bumping of the
+road was exchanged for the crisp smoothness of a gravel-drive,
+and the carriage came to a stand. Colonel Lysander Stark sprang
+out, and, as I followed after him, pulled me swiftly into a porch
+which gaped in front of us. We stepped, as it were, right out of
+the carriage and into the hall, so that I failed to catch the
+most fleeting glance of the front of the house. The instant that
+I had crossed the threshold the door slammed heavily behind us,
+and I heard faintly the rattle of the wheels as the carriage
+drove away.
+
+"It was pitch dark inside the house, and the colonel fumbled
+about looking for matches and muttering under his breath.
+Suddenly a door opened at the other end of the passage, and a
+long, golden bar of light shot out in our direction. It grew
+broader, and a woman appeared with a lamp in her hand, which she
+held above her head, pushing her face forward and peering at us.
+I could see that she was pretty, and from the gloss with which
+the light shone upon her dark dress I knew that it was a rich
+material. She spoke a few words in a foreign tongue in a tone as
+though asking a question, and when my companion answered in a
+gruff monosyllable she gave such a start that the lamp nearly
+fell from her hand. Colonel Stark went up to her, whispered
+something in her ear, and then, pushing her back into the room
+from whence she had come, he walked towards me again with the
+lamp in his hand.
+
+"'Perhaps you will have the kindness to wait in this room for a
+few minutes,' said he, throwing open another door. It was a
+quiet, little, plainly furnished room, with a round table in the
+centre, on which several German books were scattered. Colonel
+Stark laid down the lamp on the top of a harmonium beside the
+door. 'I shall not keep you waiting an instant,' said he, and
+vanished into the darkness.
+
+"I glanced at the books upon the table, and in spite of my
+ignorance of German I could see that two of them were treatises
+on science, the others being volumes of poetry. Then I walked
+across to the window, hoping that I might catch some glimpse of
+the country-side, but an oak shutter, heavily barred, was folded
+across it. It was a wonderfully silent house. There was an old
+clock ticking loudly somewhere in the passage, but otherwise
+everything was deadly still. A vague feeling of uneasiness began
+to steal over me. Who were these German people, and what were
+they doing living in this strange, out-of-the-way place? And
+where was the place? I was ten miles or so from Eyford, that was
+all I knew, but whether north, south, east, or west I had no
+idea. For that matter, Reading, and possibly other large towns,
+were within that radius, so the place might not be so secluded,
+after all. Yet it was quite certain, from the absolute stillness,
+that we were in the country. I paced up and down the room,
+humming a tune under my breath to keep up my spirits and feeling
+that I was thoroughly earning my fifty-guinea fee.
+
+"Suddenly, without any preliminary sound in the midst of the
+utter stillness, the door of my room swung slowly open. The woman
+was standing in the aperture, the darkness of the hall behind
+her, the yellow light from my lamp beating upon her eager and
+beautiful face. I could see at a glance that she was sick with
+fear, and the sight sent a chill to my own heart. She held up one
+shaking finger to warn me to be silent, and she shot a few
+whispered words of broken English at me, her eyes glancing back,
+like those of a frightened horse, into the gloom behind her.
+
+"'I would go,' said she, trying hard, as it seemed to me, to
+speak calmly; 'I would go. I should not stay here. There is no
+good for you to do.'
+
+"'But, madam,' said I, 'I have not yet done what I came for. I
+cannot possibly leave until I have seen the machine.'
+
+"'It is not worth your while to wait,' she went on. 'You can pass
+through the door; no one hinders.' And then, seeing that I smiled
+and shook my head, she suddenly threw aside her constraint and
+made a step forward, with her hands wrung together. 'For the love
+of Heaven!' she whispered, 'get away from here before it is too
+late!'
+
+"But I am somewhat headstrong by nature, and the more ready to
+engage in an affair when there is some obstacle in the way. I
+thought of my fifty-guinea fee, of my wearisome journey, and of
+the unpleasant night which seemed to be before me. Was it all to
+go for nothing? Why should I slink away without having carried
+out my commission, and without the payment which was my due? This
+woman might, for all I knew, be a monomaniac. With a stout
+bearing, therefore, though her manner had shaken me more than I
+cared to confess, I still shook my head and declared my intention
+of remaining where I was. She was about to renew her entreaties
+when a door slammed overhead, and the sound of several footsteps
+was heard upon the stairs. She listened for an instant, threw up
+her hands with a despairing gesture, and vanished as suddenly and
+as noiselessly as she had come.
+
+"The newcomers were Colonel Lysander Stark and a short thick man
+with a chinchilla beard growing out of the creases of his double
+chin, who was introduced to me as Mr. Ferguson.
+
+"'This is my secretary and manager,' said the colonel. 'By the
+way, I was under the impression that I left this door shut just
+now. I fear that you have felt the draught.'
+
+"'On the contrary,' said I, 'I opened the door myself because I
+felt the room to be a little close.'
+
+"He shot one of his suspicious looks at me. 'Perhaps we had
+better proceed to business, then,' said he. 'Mr. Ferguson and I
+will take you up to see the machine.'
+
+"'I had better put my hat on, I suppose.'
+
+"'Oh, no, it is in the house.'
+
+"'What, you dig fuller's-earth in the house?'
+
+"'No, no. This is only where we compress it. But never mind that.
+All we wish you to do is to examine the machine and to let us
+know what is wrong with it.'
+
+"We went upstairs together, the colonel first with the lamp, the
+fat manager and I behind him. It was a labyrinth of an old house,
+with corridors, passages, narrow winding staircases, and little
+low doors, the thresholds of which were hollowed out by the
+generations who had crossed them. There were no carpets and no
+signs of any furniture above the ground floor, while the plaster
+was peeling off the walls, and the damp was breaking through in
+green, unhealthy blotches. I tried to put on as unconcerned an
+air as possible, but I had not forgotten the warnings of the
+lady, even though I disregarded them, and I kept a keen eye upon
+my two companions. Ferguson appeared to be a morose and silent
+man, but I could see from the little that he said that he was at
+least a fellow-countryman.
+
+"Colonel Lysander Stark stopped at last before a low door, which
+he unlocked. Within was a small, square room, in which the three
+of us could hardly get at one time. Ferguson remained outside,
+and the colonel ushered me in.
+
+"'We are now,' said he, 'actually within the hydraulic press, and
+it would be a particularly unpleasant thing for us if anyone were
+to turn it on. The ceiling of this small chamber is really the
+end of the descending piston, and it comes down with the force of
+many tons upon this metal floor. There are small lateral columns
+of water outside which receive the force, and which transmit and
+multiply it in the manner which is familiar to you. The machine
+goes readily enough, but there is some stiffness in the working
+of it, and it has lost a little of its force. Perhaps you will
+have the goodness to look it over and to show us how we can set
+it right.'
+
+"I took the lamp from him, and I examined the machine very
+thoroughly. It was indeed a gigantic one, and capable of
+exercising enormous pressure. When I passed outside, however, and
+pressed down the levers which controlled it, I knew at once by
+the whishing sound that there was a slight leakage, which allowed
+a regurgitation of water through one of the side cylinders. An
+examination showed that one of the india-rubber bands which was
+round the head of a driving-rod had shrunk so as not quite to
+fill the socket along which it worked. This was clearly the cause
+of the loss of power, and I pointed it out to my companions, who
+followed my remarks very carefully and asked several practical
+questions as to how they should proceed to set it right. When I
+had made it clear to them, I returned to the main chamber of the
+machine and took a good look at it to satisfy my own curiosity.
+It was obvious at a glance that the story of the fuller's-earth
+was the merest fabrication, for it would be absurd to suppose
+that so powerful an engine could be designed for so inadequate a
+purpose. The walls were of wood, but the floor consisted of a
+large iron trough, and when I came to examine it I could see a
+crust of metallic deposit all over it. I had stooped and was
+scraping at this to see exactly what it was when I heard a
+muttered exclamation in German and saw the cadaverous face of the
+colonel looking down at me.
+
+"'What are you doing there?' he asked.
+
+"I felt angry at having been tricked by so elaborate a story as
+that which he had told me. 'I was admiring your fuller's-earth,'
+said I; 'I think that I should be better able to advise you as to
+your machine if I knew what the exact purpose was for which it
+was used.'
+
+"The instant that I uttered the words I regretted the rashness of
+my speech. His face set hard, and a baleful light sprang up in
+his grey eyes.
+
+"'Very well,' said he, 'you shall know all about the machine.' He
+took a step backward, slammed the little door, and turned the key
+in the lock. I rushed towards it and pulled at the handle, but it
+was quite secure, and did not give in the least to my kicks and
+shoves. 'Hullo!' I yelled. 'Hullo! Colonel! Let me out!'
+
+"And then suddenly in the silence I heard a sound which sent my
+heart into my mouth. It was the clank of the levers and the swish
+of the leaking cylinder. He had set the engine at work. The lamp
+still stood upon the floor where I had placed it when examining
+the trough. By its light I saw that the black ceiling was coming
+down upon me, slowly, jerkily, but, as none knew better than
+myself, with a force which must within a minute grind me to a
+shapeless pulp. I threw myself, screaming, against the door, and
+dragged with my nails at the lock. I implored the colonel to let
+me out, but the remorseless clanking of the levers drowned my
+cries. The ceiling was only a foot or two above my head, and with
+my hand upraised I could feel its hard, rough surface. Then it
+flashed through my mind that the pain of my death would depend
+very much upon the position in which I met it. If I lay on my
+face the weight would come upon my spine, and I shuddered to
+think of that dreadful snap. Easier the other way, perhaps; and
+yet, had I the nerve to lie and look up at that deadly black
+shadow wavering down upon me? Already I was unable to stand
+erect, when my eye caught something which brought a gush of hope
+back to my heart.
+
+"I have said that though the floor and ceiling were of iron, the
+walls were of wood. As I gave a last hurried glance around, I saw
+a thin line of yellow light between two of the boards, which
+broadened and broadened as a small panel was pushed backward. For
+an instant I could hardly believe that here was indeed a door
+which led away from death. The next instant I threw myself
+through, and lay half-fainting upon the other side. The panel had
+closed again behind me, but the crash of the lamp, and a few
+moments afterwards the clang of the two slabs of metal, told me
+how narrow had been my escape.
+
+"I was recalled to myself by a frantic plucking at my wrist, and
+I found myself lying upon the stone floor of a narrow corridor,
+while a woman bent over me and tugged at me with her left hand,
+while she held a candle in her right. It was the same good friend
+whose warning I had so foolishly rejected.
+
+"'Come! come!' she cried breathlessly. 'They will be here in a
+moment. They will see that you are not there. Oh, do not waste
+the so-precious time, but come!'
+
+"This time, at least, I did not scorn her advice. I staggered to
+my feet and ran with her along the corridor and down a winding
+stair. The latter led to another broad passage, and just as we
+reached it we heard the sound of running feet and the shouting of
+two voices, one answering the other from the floor on which  we
+were and from the one beneath. My guide stopped and looked about
+her like one  who is at her wit's end. Then she threw open a door
+which led into a bedroom, through the window of which the moon
+was shining brightly.
+
+"'It is your only chance,' said she. 'It is high, but it may be
+that you can jump it.'
+
+"As she spoke a light sprang into view at the further end of the
+passage, and I saw the lean figure of Colonel Lysander Stark
+rushing forward with a lantern in one hand and a weapon like a
+butcher's cleaver in the other. I rushed across the bedroom,
+flung open the window, and looked out. How quiet and sweet and
+wholesome the garden looked in the moonlight, and it could not be
+more than thirty feet down. I clambered out upon the sill, but I
+hesitated to jump until I should have heard what passed between
+my saviour and the ruffian who pursued me. If she were ill-used,
+then at any risks I was determined to go back to her assistance.
+The thought had hardly flashed through my mind before he was at
+the door, pushing his way past her; but she threw her arms round
+him and tried to hold him back.
+
+"'Fritz! Fritz!' she cried in English, 'remember your promise
+after the last time. You said it should not be again. He will be
+silent! Oh, he will be silent!'
+
+"'You are mad, Elise!' he shouted, struggling to break away from
+her. 'You will be the ruin of us. He has seen too much. Let me
+pass, I say!' He dashed her to one side, and, rushing to the
+window, cut at me with his heavy weapon. I had let myself go, and
+was hanging by the hands to the sill, when his blow fell. I was
+conscious of a dull pain, my grip loosened, and I fell into the
+garden below.
+
+"I was shaken but not hurt by the fall; so I picked myself up and
+rushed off among the bushes as hard as I could run, for I
+understood that I was far from being out of danger yet. Suddenly,
+however, as I ran, a deadly dizziness and sickness came over me.
+I glanced down at my hand, which was throbbing painfully, and
+then, for the first time, saw that my thumb had been cut off and
+that the blood was pouring from my wound. I endeavoured to tie my
+handkerchief round it, but there came a sudden buzzing in my
+ears, and next moment I fell in a dead faint among the
+rose-bushes.
+
+"How long I remained unconscious I cannot tell. It must have been
+a very long time, for the moon had sunk, and a bright morning was
+breaking when I came to myself. My clothes were all sodden with
+dew, and my coat-sleeve was drenched with blood from my wounded
+thumb. The smarting of it recalled in an instant all the
+particulars of my night's adventure, and I sprang to my feet with
+the feeling that I might hardly yet be safe from my pursuers. But
+to my astonishment, when I came to look round me, neither house
+nor garden were to be seen. I had been lying in an angle of the
+hedge close by the highroad, and just a little lower down was a
+long building, which proved, upon my approaching it, to be the
+very station at which I had arrived upon the previous night. Were
+it not for the ugly wound upon my hand, all that had passed
+during those dreadful hours might have been an evil dream.
+
+"Half dazed, I went into the station and asked about the morning
+train. There would be one to Reading in less than an hour. The
+same porter was on duty, I found, as had been there when I
+arrived. I inquired of him whether he had ever heard of Colonel
+Lysander Stark. The name was strange to him. Had he observed a
+carriage the night before waiting for me? No, he had not. Was
+there a police-station anywhere near? There was one about three
+miles off.
+
+"It was too far for me to go, weak and ill as I was. I determined
+to wait until I got back to town before telling my story to the
+police. It was a little past six when I arrived, so I went first
+to have my wound dressed, and then the doctor was kind enough to
+bring me along here. I put the case into your hands and shall do
+exactly what you advise."
+
+We both sat in silence for some little time after listening to
+this extraordinary narrative. Then Sherlock Holmes pulled down
+from the shelf one of the ponderous commonplace books in which he
+placed his cuttings.
+
+"Here is an advertisement which will interest you," said he. "It
+appeared in all the papers about a year ago. Listen to this:
+'Lost, on the 9th inst., Mr. Jeremiah Hayling, aged
+twenty-six, a hydraulic engineer. Left his lodgings at ten
+o'clock at night, and has not been heard of since. Was
+dressed in,' etc., etc. Ha! That represents the last time that
+the colonel needed to have his machine overhauled, I fancy."
+
+"Good heavens!" cried my patient. "Then that explains what the
+girl said."
+
+"Undoubtedly. It is quite clear that the colonel was a cool and
+desperate man, who was absolutely determined that nothing should
+stand in the way of his little game, like those out-and-out
+pirates who will leave no survivor from a captured ship. Well,
+every moment now is precious, so if you feel equal to it we shall
+go down to Scotland Yard at once as a preliminary to starting for
+Eyford."
+
+Some three hours or so afterwards we were all in the train
+together, bound from Reading to the little Berkshire village.
+There were Sherlock Holmes, the hydraulic engineer, Inspector
+Bradstreet, of Scotland Yard, a plain-clothes man, and myself.
+Bradstreet had spread an ordnance map of the county out upon the
+seat and was busy with his compasses drawing a circle with Eyford
+for its centre.
+
+"There you are," said he. "That circle is drawn at a radius of
+ten miles from the village. The place we want must be somewhere
+near that line. You said ten miles, I think, sir."
+
+"It was an hour's good drive."
+
+"And you think that they brought you back all that way when you
+were unconscious?"
+
+"They must have done so. I have a confused memory, too, of having
+been lifted and conveyed somewhere."
+
+"What I cannot understand," said I, "is why they should have
+spared you when they found you lying fainting in the garden.
+Perhaps the villain was softened by the woman's entreaties."
+
+"I hardly think that likely. I never saw a more inexorable face
+in my life."
+
+"Oh, we shall soon clear up all that," said Bradstreet. "Well, I
+have drawn my circle, and I only wish I knew at what point upon
+it the folk that we are in search of are to be found."
+
+"I think I could lay my finger on it," said Holmes quietly.
+
+"Really, now!" cried the inspector, "you have formed your
+opinion! Come, now, we shall see who agrees with you. I say it is
+south, for the country is more deserted there."
+
+"And I say east," said my patient.
+
+"I am for west," remarked the plain-clothes man. "There are
+several quiet little villages up there."
+
+"And I am for north," said I, "because there are no hills there,
+and our friend says that he did not notice the carriage go up
+any."
+
+"Come," cried the inspector, laughing; "it's a very pretty
+diversity of opinion. We have boxed the compass among us. Who do
+you give your casting vote to?"
+
+"You are all wrong."
+
+"But we can't all be."
+
+"Oh, yes, you can. This is my point." He placed his finger in the
+centre of the circle. "This is where we shall find them."
+
+"But the twelve-mile drive?" gasped Hatherley.
+
+"Six out and six back. Nothing simpler. You say yourself that the
+horse was fresh and glossy when you got in. How could it be that
+if it had gone twelve miles over heavy roads?"
+
+"Indeed, it is a likely ruse enough," observed Bradstreet
+thoughtfully. "Of course there can be no doubt as to the nature
+of this gang."
+
+"None at all," said Holmes. "They are coiners on a large scale,
+and have used the machine to form the amalgam which has taken the
+place of silver."
+
+"We have known for some time that a clever gang was at work,"
+said the inspector. "They have been turning out half-crowns by
+the thousand. We even traced them as far as Reading, but could
+get no farther, for they had covered their traces in a way that
+showed that they were very old hands. But now, thanks to this
+lucky chance, I think that we have got them right enough."
+
+But the inspector was mistaken, for those criminals were not
+destined to fall into the hands of justice. As we rolled into
+Eyford Station we saw a gigantic column of smoke which streamed
+up from behind a small clump of trees in the neighbourhood and
+hung like an immense ostrich feather over the landscape.
+
+"A house on fire?" asked Bradstreet as the train steamed off
+again on its way.
+
+"Yes, sir!" said the station-master.
+
+"When did it break out?"
+
+"I hear that it was during the night, sir, but it has got worse,
+and the whole place is in a blaze."
+
+"Whose house is it?"
+
+"Dr. Becher's."
+
+"Tell me," broke in the engineer, "is Dr. Becher a German, very
+thin, with a long, sharp nose?"
+
+The station-master laughed heartily. "No, sir, Dr. Becher is an
+Englishman, and there isn't a man in the parish who has a
+better-lined waistcoat. But he has a gentleman staying with him,
+a patient, as I understand, who is a foreigner, and he looks as
+if a little good Berkshire beef would do him no harm."
+
+The station-master had not finished his speech before we were all
+hastening in the direction of the fire. The road topped a low
+hill, and there was a great widespread whitewashed building in
+front of us, spouting fire at every chink and window, while in
+the garden in front three fire-engines were vainly striving to
+keep the flames under.
+
+"That's it!" cried Hatherley, in intense excitement. "There is
+the gravel-drive, and there are the rose-bushes where I lay. That
+second window is the one that I jumped from."
+
+"Well, at least," said Holmes, "you have had your revenge upon
+them. There can be no question that it was your oil-lamp which,
+when it was crushed in the press, set fire to the wooden walls,
+though no doubt they were too excited in the chase after you to
+observe it at the time. Now keep your eyes open in this crowd for
+your friends of last night, though I very much fear that they are
+a good hundred miles off by now."
+
+And Holmes' fears came to be realised, for from that day to this
+no word has ever been heard either of the beautiful woman, the
+sinister German, or the morose Englishman. Early that morning a
+peasant had met a cart containing several people and some very
+bulky boxes driving rapidly in the direction of Reading, but
+there all traces of the fugitives disappeared, and even Holmes'
+ingenuity failed ever to discover the least clue as to their
+whereabouts.
+
+The firemen had been much perturbed at the strange arrangements
+which they had found within, and still more so by discovering a
+newly severed human thumb upon a window-sill of the second floor.
+About sunset, however, their efforts were at last successful, and
+they subdued the flames, but not before the roof had fallen in,
+and the whole place been reduced to such absolute ruin that, save
+some twisted cylinders and iron piping, not a trace remained of
+the machinery which had cost our unfortunate acquaintance so
+dearly. Large masses of nickel and of tin were discovered stored
+in an out-house, but no coins were to be found, which may have
+explained the presence of those bulky boxes which have been
+already referred to.
+
+How our hydraulic engineer had been conveyed from the garden to
+the spot where he recovered his senses might have remained
+forever a mystery were it not for the soft mould, which told us a
+very plain tale. He had evidently been carried down by two
+persons, one of whom had remarkably small feet and the other
+unusually large ones. On the whole, it was most probable that the
+silent Englishman, being less bold or less murderous than his
+companion, had assisted the woman to bear the unconscious man out
+of the way of danger.
+
+"Well," said our engineer ruefully as we took our seats to return
+once more to London, "it has been a pretty business for me! I
+have lost my thumb and I have lost a fifty-guinea fee, and what
+have I gained?"
+
+"Experience," said Holmes, laughing. "Indirectly it may be of
+value, you know; you have only to put it into words to gain the
+reputation of being excellent company for the remainder of your
+existence."
+
+
+
+X. THE ADVENTURE OF THE NOBLE BACHELOR
+
+The Lord St. Simon marriage, and its curious termination, have
+long ceased to be a subject of interest in those exalted circles
+in which the unfortunate bridegroom moves. Fresh scandals have
+eclipsed it, and their more piquant details have drawn the
+gossips away from this four-year-old drama. As I have reason to
+believe, however, that the full facts have never been revealed to
+the general public, and as my friend Sherlock Holmes had a
+considerable share in clearing the matter up, I feel that no
+memoir of him would be complete without some little sketch of
+this remarkable episode.
+
+It was a few weeks before my own marriage, during the days when I
+was still sharing rooms with Holmes in Baker Street, that he came
+home from an afternoon stroll to find a letter on the table
+waiting for him. I had remained indoors all day, for the weather
+had taken a sudden turn to rain, with high autumnal winds, and
+the Jezail bullet which I had brought back in one of my limbs as
+a relic of my Afghan campaign throbbed with dull persistence.
+With my body in one easy-chair and my legs upon another, I had
+surrounded myself with a cloud of newspapers until at last,
+saturated with the news of the day, I tossed them all aside and
+lay listless, watching the huge crest and monogram upon the
+envelope upon the table and wondering lazily who my friend's
+noble correspondent could be.
+
+"Here is a very fashionable epistle," I remarked as he entered.
+"Your morning letters, if I remember right, were from a
+fish-monger and a tide-waiter."
+
+"Yes, my correspondence has certainly the charm of variety," he
+answered, smiling, "and the humbler are usually the more
+interesting. This looks like one of those unwelcome social
+summonses which call upon a man either to be bored or to lie."
+
+He broke the seal and glanced over the contents.
+
+"Oh, come, it may prove to be something of interest, after all."
+
+"Not social, then?"
+
+"No, distinctly professional."
+
+"And from a noble client?"
+
+"One of the highest in England."
+
+"My dear fellow, I congratulate you."
+
+"I assure you, Watson, without affectation, that the status of my
+client is a matter of less moment to me than the interest of his
+case. It is just possible, however, that that also may not be
+wanting in this new investigation. You have been reading the
+papers diligently of late, have you not?"
+
+"It looks like it," said I ruefully, pointing to a huge bundle in
+the corner. "I have had nothing else to do."
+
+"It is fortunate, for you will perhaps be able to post me up. I
+read nothing except the criminal news and the agony column. The
+latter is always instructive. But if you have followed recent
+events so closely you must have read about Lord St. Simon and his
+wedding?"
+
+"Oh, yes, with the deepest interest."
+
+"That is well. The letter which I hold in my hand is from Lord
+St. Simon. I will read it to you, and in return you must turn
+over these papers and let me have whatever bears upon the matter.
+This is what he says:
+
+"'MY DEAR MR. SHERLOCK HOLMES:--Lord Backwater tells me that I
+may place implicit reliance upon your judgment and discretion. I
+have determined, therefore, to call upon you and to consult you
+in reference to the very painful event which has occurred in
+connection with my wedding. Mr. Lestrade, of Scotland Yard, is
+acting already in the matter, but he assures me that he sees no
+objection to your co-operation, and that he even thinks that
+it might be of some assistance. I will call at four o'clock in
+the afternoon, and, should you have any other engagement at that
+time, I hope that you will postpone it, as this matter is of
+paramount importance. Yours faithfully, ST. SIMON.'
+
+"It is dated from Grosvenor Mansions, written with a quill pen,
+and the noble lord has had the misfortune to get a smear of ink
+upon the outer side of his right little finger," remarked Holmes
+as he folded up the epistle.
+
+"He says four o'clock. It is three now. He will be here in an
+hour."
+
+"Then I have just time, with your assistance, to get clear upon
+the subject. Turn over those papers and arrange the extracts in
+their order of time, while I take a glance as to who our client
+is." He picked a red-covered volume from a line of books of
+reference beside the mantelpiece. "Here he is," said he, sitting
+down and flattening it out upon his knee. "'Lord Robert Walsingham
+de Vere St. Simon, second son of the Duke of Balmoral.' Hum! 'Arms:
+Azure, three caltrops in chief over a fess sable. Born in 1846.'
+He's forty-one years of age, which is mature for marriage. Was
+Under-Secretary for the colonies in a late administration. The
+Duke, his father, was at one time Secretary for Foreign Affairs.
+They inherit Plantagenet blood by direct descent, and Tudor on
+the distaff side. Ha! Well, there is nothing very instructive in
+all this. I think that I must turn to you Watson, for something
+more solid."
+
+"I have very little difficulty in finding what I want," said I,
+"for the facts are quite recent, and the matter struck me as
+remarkable. I feared to refer them to you, however, as I knew
+that you had an inquiry on hand and that you disliked the
+intrusion of other matters."
+
+"Oh, you mean the little problem of the Grosvenor Square
+furniture van. That is quite cleared up now--though, indeed, it
+was obvious from the first. Pray give me the results of your
+newspaper selections."
+
+"Here is the first notice which I can find. It is in the personal
+column of the Morning Post, and dates, as you see, some weeks
+back: 'A marriage has been arranged,' it says, 'and will, if
+rumour is correct, very shortly take place, between Lord Robert
+St. Simon, second son of the Duke of Balmoral, and Miss Hatty
+Doran, the only daughter of Aloysius Doran. Esq., of San
+Francisco, Cal., U.S.A.' That is all."
+
+"Terse and to the point," remarked Holmes, stretching his long,
+thin legs towards the fire.
+
+"There was a paragraph amplifying this in one of the society
+papers of the same week. Ah, here it is: 'There will soon be a
+call for protection in the marriage market, for the present
+free-trade principle appears to tell heavily against our home
+product. One by one the management of the noble houses of Great
+Britain is passing into the hands of our fair cousins from across
+the Atlantic. An important addition has been made during the last
+week to the list of the prizes which have been borne away by
+these charming invaders. Lord St. Simon, who has shown himself
+for over twenty years proof against the little god's arrows, has
+now definitely announced his approaching marriage with Miss Hatty
+Doran, the fascinating daughter of a California millionaire. Miss
+Doran, whose graceful figure and striking face attracted much
+attention at the Westbury House festivities, is an only child,
+and it is currently reported that her dowry will run to
+considerably over the six figures, with expectancies for the
+future. As it is an open secret that the Duke of Balmoral has
+been compelled to sell his pictures within the last few years,
+and as Lord St. Simon has no property of his own save the small
+estate of Birchmoor, it is obvious that the Californian heiress
+is not the only gainer by an alliance which will enable her to
+make the easy and common transition from a Republican lady to a
+British peeress.'"
+
+"Anything else?" asked Holmes, yawning.
+
+"Oh, yes; plenty. Then there is another note in the Morning Post
+to say that the marriage would be an absolutely quiet one, that it
+would be at St. George's, Hanover Square, that only half a dozen
+intimate friends would be invited, and that the party would
+return to the furnished house at Lancaster Gate which has been
+taken by Mr. Aloysius Doran. Two days later--that is, on
+Wednesday last--there is a curt announcement that the wedding had
+taken place, and that the honeymoon would be passed at Lord
+Backwater's place, near Petersfield. Those are all the notices
+which appeared before the disappearance of the bride."
+
+"Before the what?" asked Holmes with a start.
+
+"The vanishing of the lady."
+
+"When did she vanish, then?"
+
+"At the wedding breakfast."
+
+"Indeed. This is more interesting than it promised to be; quite
+dramatic, in fact."
+
+"Yes; it struck me as being a little out of the common."
+
+"They often vanish before the ceremony, and occasionally during
+the honeymoon; but I cannot call to mind anything quite so prompt
+as this. Pray let me have the details."
+
+"I warn you that they are very incomplete."
+
+"Perhaps we may make them less so."
+
+"Such as they are, they are set forth in a single article of a
+morning paper of yesterday, which I will read to you. It is
+headed, 'Singular Occurrence at a Fashionable Wedding':
+
+"'The family of Lord Robert St. Simon has been thrown into the
+greatest consternation by the strange and painful episodes which
+have taken place in connection with his wedding. The ceremony, as
+shortly announced in the papers of yesterday, occurred on the
+previous morning; but it is only now that it has been possible to
+confirm the strange rumours which have been so persistently
+floating about. In spite of the attempts of the friends to hush
+the matter up, so much public attention has now been drawn to it
+that no good purpose can be served by affecting to disregard what
+is a common subject for conversation.
+
+"'The ceremony, which was performed at St. George's, Hanover
+Square, was a very quiet one, no one being present save the
+father of the bride, Mr. Aloysius Doran, the Duchess of Balmoral,
+Lord Backwater, Lord Eustace and Lady Clara St. Simon (the
+younger brother and sister of the bridegroom), and Lady Alicia
+Whittington. The whole party proceeded afterwards to the house of
+Mr. Aloysius Doran, at Lancaster Gate, where breakfast had been
+prepared. It appears that some little trouble was caused by a
+woman, whose name has not been ascertained, who endeavoured to
+force her way into the house after the bridal party, alleging
+that she had some claim upon Lord St. Simon. It was only after a
+painful and prolonged scene that she was ejected by the butler
+and the footman. The bride, who had fortunately entered the house
+before this unpleasant interruption, had sat down to breakfast
+with the rest, when she complained of a sudden indisposition and
+retired to her room. Her prolonged absence having caused some
+comment, her father followed her, but learned from her maid that
+she had only come up to her chamber for an instant, caught up an
+ulster and bonnet, and hurried down to the passage. One of the
+footmen declared that he had seen a lady leave the house thus
+apparelled, but had refused to credit that it was his mistress,
+believing her to be with the company. On ascertaining that his
+daughter had disappeared, Mr. Aloysius Doran, in conjunction with
+the bridegroom, instantly put themselves in communication with
+the police, and very energetic inquiries are being made, which
+will probably result in a speedy clearing up of this very
+singular business. Up to a late hour last night, however, nothing
+had transpired as to the whereabouts of the missing lady. There
+are rumours of foul play in the matter, and it is said that the
+police have caused the arrest of the woman who had caused the
+original disturbance, in the belief that, from jealousy or some
+other motive, she may have been concerned in the strange
+disappearance of the bride.'"
+
+"And is that all?"
+
+"Only one little item in another of the morning papers, but it is
+a suggestive one."
+
+"And it is--"
+
+"That Miss Flora Millar, the lady who had caused the disturbance,
+has actually been arrested. It appears that she was formerly a
+danseuse at the Allegro, and that she has known the bridegroom
+for some years. There are no further particulars, and the whole
+case is in your hands now--so far as it has been set forth in the
+public press."
+
+"And an exceedingly interesting case it appears to be. I would
+not have missed it for worlds. But there is a ring at the bell,
+Watson, and as the clock makes it a few minutes after four, I
+have no doubt that this will prove to be our noble client. Do not
+dream of going, Watson, for I very much prefer having a witness,
+if only as a check to my own memory."
+
+"Lord Robert St. Simon," announced our page-boy, throwing open
+the door. A gentleman entered, with a pleasant, cultured face,
+high-nosed and pale, with something perhaps of petulance about
+the mouth, and with the steady, well-opened eye of a man whose
+pleasant lot it had ever been to command and to be obeyed. His
+manner was brisk, and yet his general appearance gave an undue
+impression of age, for he had a slight forward stoop and a little
+bend of the knees as he walked. His hair, too, as he swept off
+his very curly-brimmed hat, was grizzled round the edges and thin
+upon the top. As to his dress, it was careful to the verge of
+foppishness, with high collar, black frock-coat, white waistcoat,
+yellow gloves, patent-leather shoes, and light-coloured gaiters.
+He advanced slowly into the room, turning his head from left to
+right, and swinging in his right hand the cord which held his
+golden eyeglasses.
+
+"Good-day, Lord St. Simon," said Holmes, rising and bowing. "Pray
+take the basket-chair. This is my friend and colleague, Dr.
+Watson. Draw up a little to the fire, and we will talk this
+matter over."
+
+"A most painful matter to me, as you can most readily imagine,
+Mr. Holmes. I have been cut to the quick. I understand that you
+have already managed several delicate cases of this sort, sir,
+though I presume that they were hardly from the same class of
+society."
+
+"No, I am descending."
+
+"I beg pardon."
+
+"My last client of the sort was a king."
+
+"Oh, really! I had no idea. And which king?"
+
+"The King of Scandinavia."
+
+"What! Had he lost his wife?"
+
+"You can understand," said Holmes suavely, "that I extend to the
+affairs of my other clients the same secrecy which I promise to
+you in yours."
+
+"Of course! Very right! very right! I'm sure I beg pardon. As to
+my own case, I am ready to give you any information which may
+assist you in forming an opinion."
+
+"Thank you. I have already learned all that is in the public
+prints, nothing more. I presume that I may take it as correct--this
+article, for example, as to the disappearance of the bride."
+
+Lord St. Simon glanced over it. "Yes, it is correct, as far as it
+goes."
+
+"But it needs a great deal of supplementing before anyone could
+offer an opinion. I think that I may arrive at my facts most
+directly by questioning you."
+
+"Pray do so."
+
+"When did you first meet Miss Hatty Doran?"
+
+"In San Francisco, a year ago."
+
+"You were travelling in the States?"
+
+"Yes."
+
+"Did you become engaged then?"
+
+"No."
+
+"But you were on a friendly footing?"
+
+"I was amused by her society, and she could see that I was
+amused."
+
+"Her father is very rich?"
+
+"He is said to be the richest man on the Pacific slope."
+
+"And how did he make his money?"
+
+"In mining. He had nothing a few years ago. Then he struck gold,
+invested it, and came up by leaps and bounds."
+
+"Now, what is your own impression as to the young lady's--your
+wife's character?"
+
+The nobleman swung his glasses a little faster and stared down
+into the fire. "You see, Mr. Holmes," said he, "my wife was
+twenty before her father became a rich man. During that time she
+ran free in a mining camp and wandered through woods or
+mountains, so that her education has come from Nature rather than
+from the schoolmaster. She is what we call in England a tomboy,
+with a strong nature, wild and free, unfettered by any sort of
+traditions. She is impetuous--volcanic, I was about to say. She
+is swift in making up her mind and fearless in carrying out her
+resolutions. On the other hand, I would not have given her the
+name which I have the honour to bear"--he gave a little stately
+cough--"had not I thought her to be at bottom a noble woman. I
+believe that she is capable of heroic self-sacrifice and that
+anything dishonourable would be repugnant to her."
+
+"Have you her photograph?"
+
+"I brought this with me." He opened a locket and showed us the
+full face of a very lovely woman. It was not a photograph but an
+ivory miniature, and the artist had brought out the full effect
+of the lustrous black hair, the large dark eyes, and the
+exquisite mouth. Holmes gazed long and earnestly at it. Then he
+closed the locket and handed it back to Lord St. Simon.
+
+"The young lady came to London, then, and you renewed your
+acquaintance?"
+
+"Yes, her father brought her over for this last London season. I
+met her several times, became engaged to her, and have now
+married her."
+
+"She brought, I understand, a considerable dowry?"
+
+"A fair dowry. Not more than is usual in my family."
+
+"And this, of course, remains to you, since the marriage is a
+fait accompli?"
+
+"I really have made no inquiries on the subject."
+
+"Very naturally not. Did you see Miss Doran on the day before the
+wedding?"
+
+"Yes."
+
+"Was she in good spirits?"
+
+"Never better. She kept talking of what we should do in our
+future lives."
+
+"Indeed! That is very interesting. And on the morning of the
+wedding?"
+
+"She was as bright as possible--at least until after the
+ceremony."
+
+"And did you observe any change in her then?"
+
+"Well, to tell the truth, I saw then the first signs that I had
+ever seen that her temper was just a little sharp. The incident
+however, was too trivial to relate and can have no possible
+bearing upon the case."
+
+"Pray let us have it, for all that."
+
+"Oh, it is childish. She dropped her bouquet as we went towards
+the vestry. She was passing the front pew at the time, and it
+fell over into the pew. There was a moment's delay, but the
+gentleman in the pew handed it up to her again, and it did not
+appear to be the worse for the fall. Yet when I spoke to her of
+the matter, she answered me abruptly; and in the carriage, on our
+way home, she seemed absurdly agitated over this trifling cause."
+
+"Indeed! You say that there was a gentleman in the pew. Some of
+the general public were present, then?"
+
+"Oh, yes. It is impossible to exclude them when the church is
+open."
+
+"This gentleman was not one of your wife's friends?"
+
+"No, no; I call him a gentleman by courtesy, but he was quite a
+common-looking person. I hardly noticed his appearance. But
+really I think that we are wandering rather far from the point."
+
+"Lady St. Simon, then, returned from the wedding in a less
+cheerful frame of mind than she had gone to it. What did she do
+on re-entering her father's house?"
+
+"I saw her in conversation with her maid."
+
+"And who is her maid?"
+
+"Alice is her name. She is an American and came from California
+with her."
+
+"A confidential servant?"
+
+"A little too much so. It seemed to me that her mistress allowed
+her to take great liberties. Still, of course, in America they
+look upon these things in a different way."
+
+"How long did she speak to this Alice?"
+
+"Oh, a few minutes. I had something else to think of."
+
+"You did not overhear what they said?"
+
+"Lady St. Simon said something about 'jumping a claim.' She was
+accustomed to use slang of the kind. I have no idea what she
+meant."
+
+"American slang is very expressive sometimes. And what did your
+wife do when she finished speaking to her maid?"
+
+"She walked into the breakfast-room."
+
+"On your arm?"
+
+"No, alone. She was very independent in little matters like that.
+Then, after we had sat down for ten minutes or so, she rose
+hurriedly, muttered some words of apology, and left the room. She
+never came back."
+
+"But this maid, Alice, as I understand, deposes that she went to
+her room, covered her bride's dress with a long ulster, put on a
+bonnet, and went out."
+
+"Quite so. And she was afterwards seen walking into Hyde Park in
+company with Flora Millar, a woman who is now in custody, and who
+had already made a disturbance at Mr. Doran's house that
+morning."
+
+"Ah, yes. I should like a few particulars as to this young lady,
+and your relations to her."
+
+Lord St. Simon shrugged his shoulders and raised his eyebrows.
+"We have been on a friendly footing for some years--I may say on
+a very friendly footing. She used to be at the Allegro. I have
+not treated her ungenerously, and she had no just cause of
+complaint against me, but you know what women are, Mr. Holmes.
+Flora was a dear little thing, but exceedingly hot-headed and
+devotedly attached to me. She wrote me dreadful letters when she
+heard that I was about to be married, and, to tell the truth, the
+reason why I had the marriage celebrated so quietly was that I
+feared lest there might be a scandal in the church. She came to
+Mr. Doran's door just after we returned, and she endeavoured to
+push her way in, uttering very abusive expressions towards my
+wife, and even threatening her, but I had foreseen the
+possibility of something of the sort, and I had two police
+fellows there in private clothes, who soon pushed her out again.
+She was quiet when she saw that there was no good in making a
+row."
+
+"Did your wife hear all this?"
+
+"No, thank goodness, she did not."
+
+"And she was seen walking with this very woman afterwards?"
+
+"Yes. That is what Mr. Lestrade, of Scotland Yard, looks upon as
+so serious. It is thought that Flora decoyed my wife out and laid
+some terrible trap for her."
+
+"Well, it is a possible supposition."
+
+"You think so, too?"
+
+"I did not say a probable one. But you do not yourself look upon
+this as likely?"
+
+"I do not think Flora would hurt a fly."
+
+"Still, jealousy is a strange transformer of characters. Pray
+what is your own theory as to what took place?"
+
+"Well, really, I came to seek a theory, not to propound one. I
+have given you all the facts. Since you ask me, however, I may
+say that it has occurred to me as possible that the excitement of
+this affair, the consciousness that she had made so immense a
+social stride, had the effect of causing some little nervous
+disturbance in my wife."
+
+"In short, that she had become suddenly deranged?"
+
+"Well, really, when I consider that she has turned her back--I
+will not say upon me, but upon so much that many have aspired to
+without success--I can hardly explain it in any other fashion."
+
+"Well, certainly that is also a conceivable hypothesis," said
+Holmes, smiling. "And now, Lord St. Simon, I think that I have
+nearly all my data. May I ask whether you were seated at the
+breakfast-table so that you could see out of the window?"
+
+"We could see the other side of the road and the Park."
+
+"Quite so. Then I do not think that I need to detain you longer.
+I shall communicate with you."
+
+"Should you be fortunate enough to solve this problem," said our
+client, rising.
+
+"I have solved it."
+
+"Eh? What was that?"
+
+"I say that I have solved it."
+
+"Where, then, is my wife?"
+
+"That is a detail which I shall speedily supply."
+
+Lord St. Simon shook his head. "I am afraid that it will take
+wiser heads than yours or mine," he remarked, and bowing in a
+stately, old-fashioned manner he departed.
+
+"It is very good of Lord St. Simon to honour my head by putting
+it on a level with his own," said Sherlock Holmes, laughing. "I
+think that I shall have a whisky and soda and a cigar after all
+this cross-questioning. I had formed my conclusions as to the
+case before our client came into the room."
+
+"My dear Holmes!"
+
+"I have notes of several similar cases, though none, as I
+remarked before, which were quite as prompt. My whole examination
+served to turn my conjecture into a certainty. Circumstantial
+evidence is occasionally very convincing, as when you find a
+trout in the milk, to quote Thoreau's example."
+
+"But I have heard all that you have heard."
+
+"Without, however, the knowledge of pre-existing cases which
+serves me so well. There was a parallel instance in Aberdeen some
+years back, and something on very much the same lines at Munich
+the year after the Franco-Prussian War. It is one of these
+cases--but, hullo, here is Lestrade! Good-afternoon, Lestrade!
+You will find an extra tumbler upon the sideboard, and there are
+cigars in the box."
+
+The official detective was attired in a pea-jacket and cravat,
+which gave him a decidedly nautical appearance, and he carried a
+black canvas bag in his hand. With a short greeting he seated
+himself and lit the cigar which had been offered to him.
+
+"What's up, then?" asked Holmes with a twinkle in his eye. "You
+look dissatisfied."
+
+"And I feel dissatisfied. It is this infernal St. Simon marriage
+case. I can make neither head nor tail of the business."
+
+"Really! You surprise me."
+
+"Who ever heard of such a mixed affair? Every clue seems to slip
+through my fingers. I have been at work upon it all day."
+
+"And very wet it seems to have made you," said Holmes laying his
+hand upon the arm of the pea-jacket.
+
+"Yes, I have been dragging the Serpentine."
+
+"In heaven's name, what for?"
+
+"In search of the body of Lady St. Simon."
+
+Sherlock Holmes leaned back in his chair and laughed heartily.
+
+"Have you dragged the basin of Trafalgar Square fountain?" he
+asked.
+
+"Why? What do you mean?"
+
+"Because you have just as good a chance of finding this lady in
+the one as in the other."
+
+Lestrade shot an angry glance at my companion. "I suppose you
+know all about it," he snarled.
+
+"Well, I have only just heard the facts, but my mind is made up."
+
+"Oh, indeed! Then you think that the Serpentine plays no part in
+the matter?"
+
+"I think it very unlikely."
+
+"Then perhaps you will kindly explain how it is that we found
+this in it?" He opened his bag as he spoke, and tumbled onto the
+floor a wedding-dress of watered silk, a pair of white satin
+shoes and a bride's wreath and veil, all discoloured and soaked
+in water. "There," said he, putting a new wedding-ring upon the
+top of the pile. "There is a little nut for you to crack, Master
+Holmes."
+
+"Oh, indeed!" said my friend, blowing blue rings into the air.
+"You dragged them from the Serpentine?"
+
+"No. They were found floating near the margin by a park-keeper.
+They have been identified as her clothes, and it seemed to me
+that if the clothes were there the body would not be far off."
+
+"By the same brilliant reasoning, every man's body is to be found
+in the neighbourhood of his wardrobe. And pray what did you hope
+to arrive at through this?"
+
+"At some evidence implicating Flora Millar in the disappearance."
+
+"I am afraid that you will find it difficult."
+
+"Are you, indeed, now?" cried Lestrade with some bitterness. "I
+am afraid, Holmes, that you are not very practical with your
+deductions and your inferences. You have made two blunders in as
+many minutes. This dress does implicate Miss Flora Millar."
+
+"And how?"
+
+"In the dress is a pocket. In the pocket is a card-case. In the
+card-case is a note. And here is the very note." He slapped it
+down upon the table in front of him. "Listen to this: 'You will
+see me when all is ready. Come at once. F.H.M.' Now my theory all
+along has been that Lady St. Simon was decoyed away by Flora
+Millar, and that she, with confederates, no doubt, was
+responsible for her disappearance. Here, signed with her
+initials, is the very note which was no doubt quietly slipped
+into her hand at the door and which lured her within their
+reach."
+
+"Very good, Lestrade," said Holmes, laughing. "You really are
+very fine indeed. Let me see it." He took up the paper in a
+listless way, but his attention instantly became riveted, and he
+gave a little cry of satisfaction. "This is indeed important,"
+said he.
+
+"Ha! you find it so?"
+
+"Extremely so. I congratulate you warmly."
+
+Lestrade rose in his triumph and bent his head to look. "Why," he
+shrieked, "you're looking at the wrong side!"
+
+"On the contrary, this is the right side."
+
+"The right side? You're mad! Here is the note written in pencil
+over here."
+
+"And over here is what appears to be the fragment of a hotel
+bill, which interests me deeply."
+
+"There's nothing in it. I looked at it before," said Lestrade.
+"'Oct. 4th, rooms 8s., breakfast 2s. 6d., cocktail 1s., lunch 2s.
+6d., glass sherry, 8d.' I see nothing in that."
+
+"Very likely not. It is most important, all the same. As to the
+note, it is important also, or at least the initials are, so I
+congratulate you again."
+
+"I've wasted time enough," said Lestrade, rising. "I believe in
+hard work and not in sitting by the fire spinning fine theories.
+Good-day, Mr. Holmes, and we shall see which gets to the bottom
+of the matter first." He gathered up the garments, thrust them
+into the bag, and made for the door.
+
+"Just one hint to you, Lestrade," drawled Holmes before his rival
+vanished; "I will tell you the true solution of the matter. Lady
+St. Simon is a myth. There is not, and there never has been, any
+such person."
+
+Lestrade looked sadly at my companion. Then he turned to me,
+tapped his forehead three times, shook his head solemnly, and
+hurried away.
+
+He had hardly shut the door behind him when Holmes rose to put on
+his overcoat. "There is something in what the fellow says about
+outdoor work," he remarked, "so I think, Watson, that I must
+leave you to your papers for a little."
+
+It was after five o'clock when Sherlock Holmes left me, but I had
+no time to be lonely, for within an hour there arrived a
+confectioner's man with a very large flat box. This he unpacked
+with the help of a youth whom he had brought with him, and
+presently, to my very great astonishment, a quite epicurean
+little cold supper began to be laid out upon our humble
+lodging-house mahogany. There were a couple of brace of cold
+woodcock, a pheasant, a pâté de foie gras pie with a group of
+ancient and cobwebby bottles. Having laid out all these luxuries,
+my two visitors vanished away, like the genii of the Arabian
+Nights, with no explanation save that the things had been paid
+for and were ordered to this address.
+
+Just before nine o'clock Sherlock Holmes stepped briskly into the
+room. His features were gravely set, but there was a light in his
+eye which made me think that he had not been disappointed in his
+conclusions.
+
+"They have laid the supper, then," he said, rubbing his hands.
+
+"You seem to expect company. They have laid for five."
+
+"Yes, I fancy we may have some company dropping in," said he. "I
+am surprised that Lord St. Simon has not already arrived. Ha! I
+fancy that I hear his step now upon the stairs."
+
+It was indeed our visitor of the afternoon who came bustling in,
+dangling his glasses more vigorously than ever, and with a very
+perturbed expression upon his aristocratic features.
+
+"My messenger reached you, then?" asked Holmes.
+
+"Yes, and I confess that the contents startled me beyond measure.
+Have you good authority for what you say?"
+
+"The best possible."
+
+Lord St. Simon sank into a chair and passed his hand over his
+forehead.
+
+"What will the Duke say," he murmured, "when he hears that one of
+the family has been subjected to such humiliation?"
+
+"It is the purest accident. I cannot allow that there is any
+humiliation."
+
+"Ah, you look on these things from another standpoint."
+
+"I fail to see that anyone is to blame. I can hardly see how the
+lady could have acted otherwise, though her abrupt method of
+doing it was undoubtedly to be regretted. Having no mother, she
+had no one to advise her at such a crisis."
+
+"It was a slight, sir, a public slight," said Lord St. Simon,
+tapping his fingers upon the table.
+
+"You must make allowance for this poor girl, placed in so
+unprecedented a position."
+
+"I will make no allowance. I am very angry indeed, and I have
+been shamefully used."
+
+"I think that I heard a ring," said Holmes. "Yes, there are steps
+on the landing. If I cannot persuade you to take a lenient view
+of the matter, Lord St. Simon, I have brought an advocate here
+who may be more successful." He opened the door and ushered in a
+lady and gentleman. "Lord St. Simon," said he "allow me to
+introduce you to Mr. and Mrs. Francis Hay Moulton. The lady, I
+think, you have already met."
+
+At the sight of these newcomers our client had sprung from his
+seat and stood very erect, with his eyes cast down and his hand
+thrust into the breast of his frock-coat, a picture of offended
+dignity. The lady had taken a quick step forward and had held out
+her hand to him, but he still refused to raise his eyes. It was
+as well for his resolution, perhaps, for her pleading face was
+one which it was hard to resist.
+
+"You're angry, Robert," said she. "Well, I guess you have every
+cause to be."
+
+"Pray make no apology to me," said Lord St. Simon bitterly.
+
+"Oh, yes, I know that I have treated you real bad and that I
+should have spoken to you before I went; but I was kind of
+rattled, and from the time when I saw Frank here again I just
+didn't know what I was doing or saying. I only wonder I didn't
+fall down and do a faint right there before the altar."
+
+"Perhaps, Mrs. Moulton, you would like my friend and me to leave
+the room while you explain this matter?"
+
+"If I may give an opinion," remarked the strange gentleman,
+"we've had just a little too much secrecy over this business
+already. For my part, I should like all Europe and America to
+hear the rights of it." He was a small, wiry, sunburnt man,
+clean-shaven, with a sharp face and alert manner.
+
+"Then I'll tell our story right away," said the lady. "Frank here
+and I met in '84, in McQuire's camp, near the Rockies, where pa
+was working a claim. We were engaged to each other, Frank and I;
+but then one day father struck a rich pocket and made a pile,
+while poor Frank here had a claim that petered out and came to
+nothing. The richer pa grew the poorer was Frank; so at last pa
+wouldn't hear of our engagement lasting any longer, and he took
+me away to 'Frisco. Frank wouldn't throw up his hand, though; so
+he followed me there, and he saw me without pa knowing anything
+about it. It would only have made him mad to know, so we just
+fixed it all up for ourselves. Frank said that he would go and
+make his pile, too, and never come back to claim me until he had
+as much as pa. So then I promised to wait for him to the end of
+time and pledged myself not to marry anyone else while he lived.
+'Why shouldn't we be married right away, then,' said he, 'and
+then I will feel sure of you; and I won't claim to be your
+husband until I come back?' Well, we talked it over, and he had
+fixed it all up so nicely, with a clergyman all ready in waiting,
+that we just did it right there; and then Frank went off to seek
+his fortune, and I went back to pa.
+
+"The next I heard of Frank was that he was in Montana, and then
+he went prospecting in Arizona, and then I heard of him from New
+Mexico. After that came a long newspaper story about how a
+miners' camp had been attacked by Apache Indians, and there was
+my Frank's name among the killed. I fainted dead away, and I was
+very sick for months after. Pa thought I had a decline and took
+me to half the doctors in 'Frisco. Not a word of news came for a
+year and more, so that I never doubted that Frank was really
+dead. Then Lord St. Simon came to 'Frisco, and we came to London,
+and a marriage was arranged, and pa was very pleased, but I felt
+all the time that no man on this earth would ever take the place
+in my heart that had been given to my poor Frank.
+
+"Still, if I had married Lord St. Simon, of course I'd have done
+my duty by him. We can't command our love, but we can our
+actions. I went to the altar with him with the intention to make
+him just as good a wife as it was in me to be. But you may
+imagine what I felt when, just as I came to the altar rails, I
+glanced back and saw Frank standing and looking at me out of the
+first pew. I thought it was his ghost at first; but when I looked
+again there he was still, with a kind of question in his eyes, as
+if to ask me whether I were glad or sorry to see him. I wonder I
+didn't drop. I know that everything was turning round, and the
+words of the clergyman were just like the buzz of a bee in my
+ear. I didn't know what to do. Should I stop the service and make
+a scene in the church? I glanced at him again, and he seemed to
+know what I was thinking, for he raised his finger to his lips to
+tell me to be still. Then I saw him scribble on a piece of paper,
+and I knew that he was writing me a note. As I passed his pew on
+the way out I dropped my bouquet over to him, and he slipped the
+note into my hand when he returned me the flowers. It was only a
+line asking me to join him when he made the sign to me to do so.
+Of course I never doubted for a moment that my first duty was now
+to him, and I determined to do just whatever he might direct.
+
+"When I got back I told my maid, who had known him in California,
+and had always been his friend. I ordered her to say nothing, but
+to get a few things packed and my ulster ready. I know I ought to
+have spoken to Lord St. Simon, but it was dreadful hard before
+his mother and all those great people. I just made up my mind to
+run away and explain afterwards. I hadn't been at the table ten
+minutes before I saw Frank out of the window at the other side of
+the road. He beckoned to me and then began walking into the Park.
+I slipped out, put on my things, and followed him. Some woman
+came talking something or other about Lord St. Simon to
+me--seemed to me from the little I heard as if he had a little
+secret of his own before marriage also--but I managed to get away
+from her and soon overtook Frank. We got into a cab together, and
+away we drove to some lodgings he had taken in Gordon Square, and
+that was my true wedding after all those years of waiting. Frank
+had been a prisoner among the Apaches, had escaped, came on to
+'Frisco, found that I had given him up for dead and had gone to
+England, followed me there, and had come upon me at last on the
+very morning of my second wedding."
+
+"I saw it in a paper," explained the American. "It gave the name
+and the church but not where the lady lived."
+
+"Then we had a talk as to what we should do, and Frank was all
+for openness, but I was so ashamed of it all that I felt as if I
+should like to vanish away and never see any of them again--just
+sending a line to pa, perhaps, to show him that I was alive. It
+was awful to me to think of all those lords and ladies sitting
+round that breakfast-table and waiting for me to come back. So
+Frank took my wedding-clothes and things and made a bundle of
+them, so that I should not be traced, and dropped them away
+somewhere where no one could find them. It is likely that we
+should have gone on to Paris to-morrow, only that this good
+gentleman, Mr. Holmes, came round to us this evening, though how
+he found us is more than I can think, and he showed us very
+clearly and kindly that I was wrong and that Frank was right, and
+that we should be putting ourselves in the wrong if we were so
+secret. Then he offered to give us a chance of talking to Lord
+St. Simon alone, and so we came right away round to his rooms at
+once. Now, Robert, you have heard it all, and I am very sorry if
+I have given you pain, and I hope that you do not think very
+meanly of me."
+
+Lord St. Simon had by no means relaxed his rigid attitude, but
+had listened with a frowning brow and a compressed lip to this
+long narrative.
+
+"Excuse me," he said, "but it is not my custom to discuss my most
+intimate personal affairs in this public manner."
+
+"Then you won't forgive me? You won't shake hands before I go?"
+
+"Oh, certainly, if it would give you any pleasure." He put out
+his hand and coldly grasped that which she extended to him.
+
+"I had hoped," suggested Holmes, "that you would have joined us
+in a friendly supper."
+
+"I think that there you ask a little too much," responded his
+Lordship. "I may be forced to acquiesce in these recent
+developments, but I can hardly be expected to make merry over
+them. I think that with your permission I will now wish you all a
+very good-night." He included us all in a sweeping bow and
+stalked out of the room.
+
+"Then I trust that you at least will honour me with your
+company," said Sherlock Holmes. "It is always a joy to meet an
+American, Mr. Moulton, for I am one of those who believe that the
+folly of a monarch and the blundering of a minister in far-gone
+years will not prevent our children from being some day citizens
+of the same world-wide country under a flag which shall be a
+quartering of the Union Jack with the Stars and Stripes."
+
+"The case has been an interesting one," remarked Holmes when our
+visitors had left us, "because it serves to show very clearly how
+simple the explanation may be of an affair which at first sight
+seems to be almost inexplicable. Nothing could be more natural
+than the sequence of events as narrated by this lady, and nothing
+stranger than the result when viewed, for instance, by Mr.
+Lestrade of Scotland Yard."
+
+"You were not yourself at fault at all, then?"
+
+"From the first, two facts were very obvious to me, the one that
+the lady had been quite willing to undergo the wedding ceremony,
+the other that she had repented of it within a few minutes of
+returning home. Obviously something had occurred during the
+morning, then, to cause her to change her mind. What could that
+something be? She could not have spoken to anyone when she was
+out, for she had been in the company of the bridegroom. Had she
+seen someone, then? If she had, it must be someone from America
+because she had spent so short a time in this country that she
+could hardly have allowed anyone to acquire so deep an influence
+over her that the mere sight of him would induce her to change
+her plans so completely. You see we have already arrived, by a
+process of exclusion, at the idea that she might have seen an
+American. Then who could this American be, and why should he
+possess so much influence over her? It might be a lover; it might
+be a husband. Her young womanhood had, I knew, been spent in
+rough scenes and under strange conditions. So far I had got
+before I ever heard Lord St. Simon's narrative. When he told us
+of a man in a pew, of the change in the bride's manner, of so
+transparent a device for obtaining a note as the dropping of a
+bouquet, of her resort to her confidential maid, and of her very
+significant allusion to claim-jumping--which in miners' parlance
+means taking possession of that which another person has a prior
+claim to--the whole situation became absolutely clear. She had
+gone off with a man, and the man was either a lover or was a
+previous husband--the chances being in favour of the latter."
+
+"And how in the world did you find them?"
+
+"It might have been difficult, but friend Lestrade held
+information in his hands the value of which he did not himself
+know. The initials were, of course, of the highest importance,
+but more valuable still was it to know that within a week he had
+settled his bill at one of the most select London hotels."
+
+"How did you deduce the select?"
+
+"By the select prices. Eight shillings for a bed and eightpence
+for a glass of sherry pointed to one of the most expensive
+hotels. There are not many in London which charge at that rate.
+In the second one which I visited in Northumberland Avenue, I
+learned by an inspection of the book that Francis H. Moulton, an
+American gentleman, had left only the day before, and on looking
+over the entries against him, I came upon the very items which I
+had seen in the duplicate bill. His letters were to be forwarded
+to 226 Gordon Square; so thither I travelled, and being fortunate
+enough to find the loving couple at home, I ventured to give them
+some paternal advice and to point out to them that it would be
+better in every way that they should make their position a little
+clearer both to the general public and to Lord St. Simon in
+particular. I invited them to meet him here, and, as you see, I
+made him keep the appointment."
+
+"But with no very good result," I remarked. "His conduct was
+certainly not very gracious."
+
+"Ah, Watson," said Holmes, smiling, "perhaps you would not be
+very gracious either, if, after all the trouble of wooing and
+wedding, you found yourself deprived in an instant of wife and of
+fortune. I think that we may judge Lord St. Simon very mercifully
+and thank our stars that we are never likely to find ourselves in
+the same position. Draw your chair up and hand me my violin, for
+the only problem we have still to solve is how to while away
+these bleak autumnal evenings."
+
+
+
+XI. THE ADVENTURE OF THE BERYL CORONET
+
+"Holmes," said I as I stood one morning in our bow-window looking
+down the street, "here is a madman coming along. It seems rather
+sad that his relatives should allow him to come out alone."
+
+My friend rose lazily from his armchair and stood with his hands
+in the pockets of his dressing-gown, looking over my shoulder. It
+was a bright, crisp February morning, and the snow of the day
+before still lay deep upon the ground, shimmering brightly in the
+wintry sun. Down the centre of Baker Street it had been ploughed
+into a brown crumbly band by the traffic, but at either side and
+on the heaped-up edges of the foot-paths it still lay as white as
+when it fell. The grey pavement had been cleaned and scraped, but
+was still dangerously slippery, so that there were fewer
+passengers than usual. Indeed, from the direction of the
+Metropolitan Station no one was coming save the single gentleman
+whose eccentric conduct had drawn my attention.
+
+He was a man of about fifty, tall, portly, and imposing, with a
+massive, strongly marked face and a commanding figure. He was
+dressed in a sombre yet rich style, in black frock-coat, shining
+hat, neat brown gaiters, and well-cut pearl-grey trousers. Yet
+his actions were in absurd contrast to the dignity of his dress
+and features, for he was running hard, with occasional little
+springs, such as a weary man gives who is little accustomed to
+set any tax upon his legs. As he ran he jerked his hands up and
+down, waggled his head, and writhed his face into the most
+extraordinary contortions.
+
+"What on earth can be the matter with him?" I asked. "He is
+looking up at the numbers of the houses."
+
+"I believe that he is coming here," said Holmes, rubbing his
+hands.
+
+"Here?"
+
+"Yes; I rather think he is coming to consult me professionally. I
+think that I recognise the symptoms. Ha! did I not tell you?" As
+he spoke, the man, puffing and blowing, rushed at our door and
+pulled at our bell until the whole house resounded with the
+clanging.
+
+A few moments later he was in our room, still puffing, still
+gesticulating, but with so fixed a look of grief and despair in
+his eyes that our smiles were turned in an instant to horror and
+pity. For a while he could not get his words out, but swayed his
+body and plucked at his hair like one who has been driven to the
+extreme limits of his reason. Then, suddenly springing to his
+feet, he beat his head against the wall with such force that we
+both rushed upon him and tore him away to the centre of the room.
+Sherlock Holmes pushed him down into the easy-chair and, sitting
+beside him, patted his hand and chatted with him in the easy,
+soothing tones which he knew so well how to employ.
+
+"You have come to me to tell your story, have you not?" said he.
+"You are fatigued with your haste. Pray wait until you have
+recovered yourself, and then I shall be most happy to look into
+any little problem which you may submit to me."
+
+The man sat for a minute or more with a heaving chest, fighting
+against his emotion. Then he passed his handkerchief over his
+brow, set his lips tight, and turned his face towards us.
+
+"No doubt you think me mad?" said he.
+
+"I see that you have had some great trouble," responded Holmes.
+
+"God knows I have!--a trouble which is enough to unseat my
+reason, so sudden and so terrible is it. Public disgrace I might
+have faced, although I am a man whose character has never yet
+borne a stain. Private affliction also is the lot of every man;
+but the two coming together, and in so frightful a form, have
+been enough to shake my very soul. Besides, it is not I alone.
+The very noblest in the land may suffer unless some way be found
+out of this horrible affair."
+
+"Pray compose yourself, sir," said Holmes, "and let me have a
+clear account of who you are and what it is that has befallen
+you."
+
+"My name," answered our visitor, "is probably familiar to your
+ears. I am Alexander Holder, of the banking firm of Holder &
+Stevenson, of Threadneedle Street."
+
+The name was indeed well known to us as belonging to the senior
+partner in the second largest private banking concern in the City
+of London. What could have happened, then, to bring one of the
+foremost citizens of London to this most pitiable pass? We
+waited, all curiosity, until with another effort he braced
+himself to tell his story.
+
+"I feel that time is of value," said he; "that is why I hastened
+here when the police inspector suggested that I should secure
+your co-operation. I came to Baker Street by the Underground and
+hurried from there on foot, for the cabs go slowly through this
+snow. That is why I was so out of breath, for I am a man who
+takes very little exercise. I feel better now, and I will put the
+facts before you as shortly and yet as clearly as I can.
+
+"It is, of course, well known to you that in a successful banking
+business as much depends upon our being able to find remunerative
+investments for our funds as upon our increasing our connection
+and the number of our depositors. One of our most lucrative means
+of laying out money is in the shape of loans, where the security
+is unimpeachable. We have done a good deal in this direction
+during the last few years, and there are many noble families to
+whom we have advanced large sums upon the security of their
+pictures, libraries, or plate.
+
+"Yesterday morning I was seated in my office at the bank when a
+card was brought in to me by one of the clerks. I started when I
+saw the name, for it was that of none other than--well, perhaps
+even to you I had better say no more than that it was a name
+which is a household word all over the earth--one of the highest,
+noblest, most exalted names in England. I was overwhelmed by the
+honour and attempted, when he entered, to say so, but he plunged
+at once into business with the air of a man who wishes to hurry
+quickly through a disagreeable task.
+
+"'Mr. Holder,' said he, 'I have been informed that you are in the
+habit of advancing money.'
+
+"'The firm does so when the security is good.' I answered.
+
+"'It is absolutely essential to me,' said he, 'that I should have
+50,000 pounds at once. I could, of course, borrow so trifling a
+sum ten times over from my friends, but I much prefer to make it
+a matter of business and to carry out that business myself. In my
+position you can readily understand that it is unwise to place
+one's self under obligations.'
+
+"'For how long, may I ask, do you want this sum?' I asked.
+
+"'Next Monday I have a large sum due to me, and I shall then most
+certainly repay what you advance, with whatever interest you
+think it right to charge. But it is very essential to me that the
+money should be paid at once.'
+
+"'I should be happy to advance it without further parley from my
+own private purse,' said I, 'were it not that the strain would be
+rather more than it could bear. If, on the other hand, I am to do
+it in the name of the firm, then in justice to my partner I must
+insist that, even in your case, every businesslike precaution
+should be taken.'
+
+"'I should much prefer to have it so,' said he, raising up a
+square, black morocco case which he had laid beside his chair.
+'You have doubtless heard of the Beryl Coronet?'
+
+"'One of the most precious public possessions of the empire,'
+said I.
+
+"'Precisely.' He opened the case, and there, imbedded in soft,
+flesh-coloured velvet, lay the magnificent piece of jewellery
+which he had named. 'There are thirty-nine enormous beryls,' said
+he, 'and the price of the gold chasing is incalculable. The
+lowest estimate would put the worth of the coronet at double the
+sum which I have asked. I am prepared to leave it with you as my
+security.'
+
+"I took the precious case into my hands and looked in some
+perplexity from it to my illustrious client.
+
+"'You doubt its value?' he asked.
+
+"'Not at all. I only doubt--'
+
+"'The propriety of my leaving it. You may set your mind at rest
+about that. I should not dream of doing so were it not absolutely
+certain that I should be able in four days to reclaim it. It is a
+pure matter of form. Is the security sufficient?'
+
+"'Ample.'
+
+"'You understand, Mr. Holder, that I am giving you a strong proof
+of the confidence which I have in you, founded upon all that I
+have heard of you. I rely upon you not only to be discreet and to
+refrain from all gossip upon the matter but, above all, to
+preserve this coronet with every possible precaution because I
+need not say that a great public scandal would be caused if any
+harm were to befall it. Any injury to it would be almost as
+serious as its complete loss, for there are no beryls in the
+world to match these, and it would be impossible to replace them.
+I leave it with you, however, with every confidence, and I shall
+call for it in person on Monday morning.'
+
+"Seeing that my client was anxious to leave, I said no more but,
+calling for my cashier, I ordered him to pay over fifty 1000
+pound notes. When I was alone once more, however, with the
+precious case lying upon the table in front of me, I could not
+but think with some misgivings of the immense responsibility
+which it entailed upon me. There could be no doubt that, as it
+was a national possession, a horrible scandal would ensue if any
+misfortune should occur to it. I already regretted having ever
+consented to take charge of it. However, it was too late to alter
+the matter now, so I locked it up in my private safe and turned
+once more to my work.
+
+"When evening came I felt that it would be an imprudence to leave
+so precious a thing in the office behind me. Bankers' safes had
+been forced before now, and why should not mine be? If so, how
+terrible would be the position in which I should find myself! I
+determined, therefore, that for the next few days I would always
+carry the case backward and forward with me, so that it might
+never be really out of my reach. With this intention, I called a
+cab and drove out to my house at Streatham, carrying the jewel
+with me. I did not breathe freely until I had taken it upstairs
+and locked it in the bureau of my dressing-room.
+
+"And now a word as to my household, Mr. Holmes, for I wish you to
+thoroughly understand the situation. My groom and my page sleep
+out of the house, and may be set aside altogether. I have three
+maid-servants who have been with me a number of years and whose
+absolute reliability is quite above suspicion. Another, Lucy
+Parr, the second waiting-maid, has only been in my service a few
+months. She came with an excellent character, however, and has
+always given me satisfaction. She is a very pretty girl and has
+attracted admirers who have occasionally hung about the place.
+That is the only drawback which we have found to her, but we
+believe her to be a thoroughly good girl in every way.
+
+"So much for the servants. My family itself is so small that it
+will not take me long to describe it. I am a widower and have an
+only son, Arthur. He has been a disappointment to me, Mr.
+Holmes--a grievous disappointment. I have no doubt that I am
+myself to blame. People tell me that I have spoiled him. Very
+likely I have. When my dear wife died I felt that he was all I
+had to love. I could not bear to see the smile fade even for a
+moment from his face. I have never denied him a wish. Perhaps it
+would have been better for both of us had I been sterner, but I
+meant it for the best.
+
+"It was naturally my intention that he should succeed me in my
+business, but he was not of a business turn. He was wild,
+wayward, and, to speak the truth, I could not trust him in the
+handling of large sums of money. When he was young he became a
+member of an aristocratic club, and there, having charming
+manners, he was soon the intimate of a number of men with long
+purses and expensive habits. He learned to play heavily at cards
+and to squander money on the turf, until he had again and again
+to come to me and implore me to give him an advance upon his
+allowance, that he might settle his debts of honour. He tried
+more than once to break away from the dangerous company which he
+was keeping, but each time the influence of his friend, Sir
+George Burnwell, was enough to draw him back again.
+
+"And, indeed, I could not wonder that such a man as Sir George
+Burnwell should gain an influence over him, for he has frequently
+brought him to my house, and I have found myself that I could
+hardly resist the fascination of his manner. He is older than
+Arthur, a man of the world to his finger-tips, one who had been
+everywhere, seen everything, a brilliant talker, and a man of
+great personal beauty. Yet when I think of him in cold blood, far
+away from the glamour of his presence, I am convinced from his
+cynical speech and the look which I have caught in his eyes that
+he is one who should be deeply distrusted. So I think, and so,
+too, thinks my little Mary, who has a woman's quick insight into
+character.
+
+"And now there is only she to be described. She is my niece; but
+when my brother died five years ago and left her alone in the
+world I adopted her, and have looked upon her ever since as my
+daughter. She is a sunbeam in my house--sweet, loving, beautiful,
+a wonderful manager and housekeeper, yet as tender and quiet and
+gentle as a woman could be. She is my right hand. I do not know
+what I could do without her. In only one matter has she ever gone
+against my wishes. Twice my boy has asked her to marry him, for
+he loves her devotedly, but each time she has refused him. I
+think that if anyone could have drawn him into the right path it
+would have been she, and that his marriage might have changed his
+whole life; but now, alas! it is too late--forever too late!
+
+"Now, Mr. Holmes, you know the people who live under my roof, and
+I shall continue with my miserable story.
+
+"When we were taking coffee in the drawing-room that night after
+dinner, I told Arthur and Mary my experience, and of the precious
+treasure which we had under our roof, suppressing only the name
+of my client. Lucy Parr, who had brought in the coffee, had, I am
+sure, left the room; but I cannot swear that the door was closed.
+Mary and Arthur were much interested and wished to see the famous
+coronet, but I thought it better not to disturb it.
+
+"'Where have you put it?' asked Arthur.
+
+"'In my own bureau.'
+
+"'Well, I hope to goodness the house won't be burgled during the
+night.' said he.
+
+"'It is locked up,' I answered.
+
+"'Oh, any old key will fit that bureau. When I was a youngster I
+have opened it myself with the key of the box-room cupboard.'
+
+"He often had a wild way of talking, so that I thought little of
+what he said. He followed me to my room, however, that night with
+a very grave face.
+
+"'Look here, dad,' said he with his eyes cast down, 'can you let
+me have 200 pounds?'
+
+"'No, I cannot!' I answered sharply. 'I have been far too
+generous with you in money matters.'
+
+"'You have been very kind,' said he, 'but I must have this money,
+or else I can never show my face inside the club again.'
+
+"'And a very good thing, too!' I cried.
+
+"'Yes, but you would not have me leave it a dishonoured man,'
+said he. 'I could not bear the disgrace. I must raise the money
+in some way, and if you will not let me have it, then I must try
+other means.'
+
+"I was very angry, for this was the third demand during the
+month. 'You shall not have a farthing from me,' I cried, on which
+he bowed and left the room without another word.
+
+"When he was gone I unlocked my bureau, made sure that my
+treasure was safe, and locked it again. Then I started to go
+round the house to see that all was secure--a duty which I
+usually leave to Mary but which I thought it well to perform
+myself that night. As I came down the stairs I saw Mary herself
+at the side window of the hall, which she closed and fastened as
+I approached.
+
+"'Tell me, dad,' said she, looking, I thought, a little
+disturbed, 'did you give Lucy, the maid, leave to go out
+to-night?'
+
+"'Certainly not.'
+
+"'She came in just now by the back door. I have no doubt that she
+has only been to the side gate to see someone, but I think that
+it is hardly safe and should be stopped.'
+
+"'You must speak to her in the morning, or I will if you prefer
+it. Are you sure that everything is fastened?'
+
+"'Quite sure, dad.'
+
+"'Then, good-night.' I kissed her and went up to my bedroom
+again, where I was soon asleep.
+
+"I am endeavouring to tell you everything, Mr. Holmes, which may
+have any bearing upon the case, but I beg that you will question
+me upon any point which I do not make clear."
+
+"On the contrary, your statement is singularly lucid."
+
+"I come to a part of my story now in which I should wish to be
+particularly so. I am not a very heavy sleeper, and the anxiety
+in my mind tended, no doubt, to make me even less so than usual.
+About two in the morning, then, I was awakened by some sound in
+the house. It had ceased ere I was wide awake, but it had left an
+impression behind it as though a window had gently closed
+somewhere. I lay listening with all my ears. Suddenly, to my
+horror, there was a distinct sound of footsteps moving softly in
+the next room. I slipped out of bed, all palpitating with fear,
+and peeped round the corner of my dressing-room door.
+
+"'Arthur!' I screamed, 'you villain! you thief! How dare you
+touch that coronet?'
+
+"The gas was half up, as I had left it, and my unhappy boy,
+dressed only in his shirt and trousers, was standing beside the
+light, holding the coronet in his hands. He appeared to be
+wrenching at it, or bending it with all his strength. At my cry
+he dropped it from his grasp and turned as pale as death. I
+snatched it up and examined it. One of the gold corners, with
+three of the beryls in it, was missing.
+
+"'You blackguard!' I shouted, beside myself with rage. 'You have
+destroyed it! You have dishonoured me forever! Where are the
+jewels which you have stolen?'
+
+"'Stolen!' he cried.
+
+"'Yes, thief!' I roared, shaking him by the shoulder.
+
+"'There are none missing. There cannot be any missing,' said he.
+
+"'There are three missing. And you know where they are. Must I
+call you a liar as well as a thief? Did I not see you trying to
+tear off another piece?'
+
+"'You have called me names enough,' said he, 'I will not stand it
+any longer. I shall not say another word about this business,
+since you have chosen to insult me. I will leave your house in
+the morning and make my own way in the world.'
+
+"'You shall leave it in the hands of the police!' I cried
+half-mad with grief and rage. 'I shall have this matter probed to
+the bottom.'
+
+"'You shall learn nothing from me,' said he with a passion such
+as I should not have thought was in his nature. 'If you choose to
+call the police, let the police find what they can.'
+
+"By this time the whole house was astir, for I had raised my
+voice in my anger. Mary was the first to rush into my room, and,
+at the sight of the coronet and of Arthur's face, she read the
+whole story and, with a scream, fell down senseless on the
+ground. I sent the house-maid for the police and put the
+investigation into their hands at once. When the inspector and a
+constable entered the house, Arthur, who had stood sullenly with
+his arms folded, asked me whether it was my intention to charge
+him with theft. I answered that it had ceased to be a private
+matter, but had become a public one, since the ruined coronet was
+national property. I was determined that the law should have its
+way in everything.
+
+"'At least,' said he, 'you will not have me arrested at once. It
+would be to your advantage as well as mine if I might leave the
+house for five minutes.'
+
+"'That you may get away, or perhaps that you may conceal what you
+have stolen,' said I. And then, realising the dreadful position
+in which I was placed, I implored him to remember that not only
+my honour but that of one who was far greater than I was at
+stake; and that he threatened to raise a scandal which would
+convulse the nation. He might avert it all if he would but tell
+me what he had done with the three missing stones.
+
+"'You may as well face the matter,' said I; 'you have been caught
+in the act, and no confession could make your guilt more heinous.
+If you but make such reparation as is in your power, by telling
+us where the beryls are, all shall be forgiven and forgotten.'
+
+"'Keep your forgiveness for those who ask for it,' he answered,
+turning away from me with a sneer. I saw that he was too hardened
+for any words of mine to influence him. There was but one way for
+it. I called in the inspector and gave him into custody. A search
+was made at once not only of his person but of his room and of
+every portion of the house where he could possibly have concealed
+the gems; but no trace of them could be found, nor would the
+wretched boy open his mouth for all our persuasions and our
+threats. This morning he was removed to a cell, and I, after
+going through all the police formalities, have hurried round to
+you to implore you to use your skill in unravelling the matter.
+The police have openly confessed that they can at present make
+nothing of it. You may go to any expense which you think
+necessary. I have already offered a reward of 1000 pounds. My
+God, what shall I do! I have lost my honour, my gems, and my son
+in one night. Oh, what shall I do!"
+
+He put a hand on either side of his head and rocked himself to
+and fro, droning to himself like a child whose grief has got
+beyond words.
+
+Sherlock Holmes sat silent for some few minutes, with his brows
+knitted and his eyes fixed upon the fire.
+
+"Do you receive much company?" he asked.
+
+"None save my partner with his family and an occasional friend of
+Arthur's. Sir George Burnwell has been several times lately. No
+one else, I think."
+
+"Do you go out much in society?"
+
+"Arthur does. Mary and I stay at home. We neither of us care for
+it."
+
+"That is unusual in a young girl."
+
+"She is of a quiet nature. Besides, she is not so very young. She
+is four-and-twenty."
+
+"This matter, from what you say, seems to have been a shock to
+her also."
+
+"Terrible! She is even more affected than I."
+
+"You have neither of you any doubt as to your son's guilt?"
+
+"How can we have when I saw him with my own eyes with the coronet
+in his hands."
+
+"I hardly consider that a conclusive proof. Was the remainder of
+the coronet at all injured?"
+
+"Yes, it was twisted."
+
+"Do you not think, then, that he might have been trying to
+straighten it?"
+
+"God bless you! You are doing what you can for him and for me.
+But it is too heavy a task. What was he doing there at all? If
+his purpose were innocent, why did he not say so?"
+
+"Precisely. And if it were guilty, why did he not invent a lie?
+His silence appears to me to cut both ways. There are several
+singular points about the case. What did the police think of the
+noise which awoke you from your sleep?"
+
+"They considered that it might be caused by Arthur's closing his
+bedroom door."
+
+"A likely story! As if a man bent on felony would slam his door
+so as to wake a household. What did they say, then, of the
+disappearance of these gems?"
+
+"They are still sounding the planking and probing the furniture
+in the hope of finding them."
+
+"Have they thought of looking outside the house?"
+
+"Yes, they have shown extraordinary energy. The whole garden has
+already been minutely examined."
+
+"Now, my dear sir," said Holmes, "is it not obvious to you now
+that this matter really strikes very much deeper than either you
+or the police were at first inclined to think? It appeared to you
+to be a simple case; to me it seems exceedingly complex. Consider
+what is involved by your theory. You suppose that your son came
+down from his bed, went, at great risk, to your dressing-room,
+opened your bureau, took out your coronet, broke off by main
+force a small portion of it, went off to some other place,
+concealed three gems out of the thirty-nine, with such skill that
+nobody can find them, and then returned with the other thirty-six
+into the room in which he exposed himself to the greatest danger
+of being discovered. I ask you now, is such a theory tenable?"
+
+"But what other is there?" cried the banker with a gesture of
+despair. "If his motives were innocent, why does he not explain
+them?"
+
+"It is our task to find that out," replied Holmes; "so now, if
+you please, Mr. Holder, we will set off for Streatham together,
+and devote an hour to glancing a little more closely into
+details."
+
+My friend insisted upon my accompanying them in their expedition,
+which I was eager enough to do, for my curiosity and sympathy
+were deeply stirred by the story to which we had listened. I
+confess that the guilt of the banker's son appeared to me to be
+as obvious as it did to his unhappy father, but still I had such
+faith in Holmes' judgment that I felt that there must be some
+grounds for hope as long as he was dissatisfied with the accepted
+explanation. He hardly spoke a word the whole way out to the
+southern suburb, but sat with his chin upon his breast and his
+hat drawn over his eyes, sunk in the deepest thought. Our client
+appeared to have taken fresh heart at the little glimpse of hope
+which had been presented to him, and he even broke into a
+desultory chat with me over his business affairs. A short railway
+journey and a shorter walk brought us to Fairbank, the modest
+residence of the great financier.
+
+Fairbank was a good-sized square house of white stone, standing
+back a little from the road. A double carriage-sweep, with a
+snow-clad lawn, stretched down in front to two large iron gates
+which closed the entrance. On the right side was a small wooden
+thicket, which led into a narrow path between two neat hedges
+stretching from the road to the kitchen door, and forming the
+tradesmen's entrance. On the left ran a lane which led to the
+stables, and was not itself within the grounds at all, being a
+public, though little used, thoroughfare. Holmes left us standing
+at the door and walked slowly all round the house, across the
+front, down the tradesmen's path, and so round by the garden
+behind into the stable lane. So long was he that Mr. Holder and I
+went into the dining-room and waited by the fire until he should
+return. We were sitting there in silence when the door opened and
+a young lady came in. She was rather above the middle height,
+slim, with dark hair and eyes, which seemed the darker against
+the absolute pallor of her skin. I do not think that I have ever
+seen such deadly paleness in a woman's face. Her lips, too, were
+bloodless, but her eyes were flushed with crying. As she swept
+silently into the room she impressed me with a greater sense of
+grief than the banker had done in the morning, and it was the
+more striking in her as she was evidently a woman of strong
+character, with immense capacity for self-restraint. Disregarding
+my presence, she went straight to her uncle and passed her hand
+over his head with a sweet womanly caress.
+
+"You have given orders that Arthur should be liberated, have you
+not, dad?" she asked.
+
+"No, no, my girl, the matter must be probed to the bottom."
+
+"But I am so sure that he is innocent. You know what woman's
+instincts are. I know that he has done no harm and that you will
+be sorry for having acted so harshly."
+
+"Why is he silent, then, if he is innocent?"
+
+"Who knows? Perhaps because he was so angry that you should
+suspect him."
+
+"How could I help suspecting him, when I actually saw him with
+the coronet in his hand?"
+
+"Oh, but he had only picked it up to look at it. Oh, do, do take
+my word for it that he is innocent. Let the matter drop and say
+no more. It is so dreadful to think of our dear Arthur in
+prison!"
+
+"I shall never let it drop until the gems are found--never, Mary!
+Your affection for Arthur blinds you as to the awful consequences
+to me. Far from hushing the thing up, I have brought a gentleman
+down from London to inquire more deeply into it."
+
+"This gentleman?" she asked, facing round to me.
+
+"No, his friend. He wished us to leave him alone. He is round in
+the stable lane now."
+
+"The stable lane?" She raised her dark eyebrows. "What can he
+hope to find there? Ah! this, I suppose, is he. I trust, sir,
+that you will succeed in proving, what I feel sure is the truth,
+that my cousin Arthur is innocent of this crime."
+
+"I fully share your opinion, and I trust, with you, that we may
+prove it," returned Holmes, going back to the mat to knock the
+snow from his shoes. "I believe I have the honour of addressing
+Miss Mary Holder. Might I ask you a question or two?"
+
+"Pray do, sir, if it may help to clear this horrible affair up."
+
+"You heard nothing yourself last night?"
+
+"Nothing, until my uncle here began to speak loudly. I heard
+that, and I came down."
+
+"You shut up the windows and doors the night before. Did you
+fasten all the windows?"
+
+"Yes."
+
+"Were they all fastened this morning?"
+
+"Yes."
+
+"You have a maid who has a sweetheart? I think that you remarked
+to your uncle last night that she had been out to see him?"
+
+"Yes, and she was the girl who waited in the drawing-room, and
+who may have heard uncle's remarks about the coronet."
+
+"I see. You infer that she may have gone out to tell her
+sweetheart, and that the two may have planned the robbery."
+
+"But what is the good of all these vague theories," cried the
+banker impatiently, "when I have told you that I saw Arthur with
+the coronet in his hands?"
+
+"Wait a little, Mr. Holder. We must come back to that. About this
+girl, Miss Holder. You saw her return by the kitchen door, I
+presume?"
+
+"Yes; when I went to see if the door was fastened for the night I
+met her slipping in. I saw the man, too, in the gloom."
+
+"Do you know him?"
+
+"Oh, yes! he is the green-grocer who brings our vegetables round.
+His name is Francis Prosper."
+
+"He stood," said Holmes, "to the left of the door--that is to
+say, farther up the path than is necessary to reach the door?"
+
+"Yes, he did."
+
+"And he is a man with a wooden leg?"
+
+Something like fear sprang up in the young lady's expressive
+black eyes. "Why, you are like a magician," said she. "How do you
+know that?" She smiled, but there was no answering smile in
+Holmes' thin, eager face.
+
+"I should be very glad now to go upstairs," said he. "I shall
+probably wish to go over the outside of the house again. Perhaps
+I had better take a look at the lower windows before I go up."
+
+He walked swiftly round from one to the other, pausing only at
+the large one which looked from the hall onto the stable lane.
+This he opened and made a very careful examination of the sill
+with his powerful magnifying lens. "Now we shall go upstairs,"
+said he at last.
+
+The banker's dressing-room was a plainly furnished little
+chamber, with a grey carpet, a large bureau, and a long mirror.
+Holmes went to the bureau first and looked hard at the lock.
+
+"Which key was used to open it?" he asked.
+
+"That which my son himself indicated--that of the cupboard of the
+lumber-room."
+
+"Have you it here?"
+
+"That is it on the dressing-table."
+
+Sherlock Holmes took it up and opened the bureau.
+
+"It is a noiseless lock," said he. "It is no wonder that it did
+not wake you. This case, I presume, contains the coronet. We must
+have a look at it." He opened the case, and taking out the diadem
+he laid it upon the table. It was a magnificent specimen of the
+jeweller's art, and the thirty-six stones were the finest that I
+have ever seen. At one side of the coronet was a cracked edge,
+where a corner holding three gems had been torn away.
+
+"Now, Mr. Holder," said Holmes, "here is the corner which
+corresponds to that which has been so unfortunately lost. Might I
+beg that you will break it off."
+
+The banker recoiled in horror. "I should not dream of trying,"
+said he.
+
+"Then I will." Holmes suddenly bent his strength upon it, but
+without result. "I feel it give a little," said he; "but, though
+I am exceptionally strong in the fingers, it would take me all my
+time to break it. An ordinary man could not do it. Now, what do
+you think would happen if I did break it, Mr. Holder? There would
+be a noise like a pistol shot. Do you tell me that all this
+happened within a few yards of your bed and that you heard
+nothing of it?"
+
+"I do not know what to think. It is all dark to me."
+
+"But perhaps it may grow lighter as we go. What do you think,
+Miss Holder?"
+
+"I confess that I still share my uncle's perplexity."
+
+"Your son had no shoes or slippers on when you saw him?"
+
+"He had nothing on save only his trousers and shirt."
+
+"Thank you. We have certainly been favoured with extraordinary
+luck during this inquiry, and it will be entirely our own fault
+if we do not succeed in clearing the matter up. With your
+permission, Mr. Holder, I shall now continue my investigations
+outside."
+
+He went alone, at his own request, for he explained that any
+unnecessary footmarks might make his task more difficult. For an
+hour or more he was at work, returning at last with his feet
+heavy with snow and his features as inscrutable as ever.
+
+"I think that I have seen now all that there is to see, Mr.
+Holder," said he; "I can serve you best by returning to my
+rooms."
+
+"But the gems, Mr. Holmes. Where are they?"
+
+"I cannot tell."
+
+The banker wrung his hands. "I shall never see them again!" he
+cried. "And my son? You give me hopes?"
+
+"My opinion is in no way altered."
+
+"Then, for God's sake, what was this dark business which was
+acted in my house last night?"
+
+"If you can call upon me at my Baker Street rooms to-morrow
+morning between nine and ten I shall be happy to do what I can to
+make it clearer. I understand that you give me carte blanche to
+act for you, provided only that I get back the gems, and that you
+place no limit on the sum I may draw."
+
+"I would give my fortune to have them back."
+
+"Very good. I shall look into the matter between this and then.
+Good-bye; it is just possible that I may have to come over here
+again before evening."
+
+It was obvious to me that my companion's mind was now made up
+about the case, although what his conclusions were was more than
+I could even dimly imagine. Several times during our homeward
+journey I endeavoured to sound him upon the point, but he always
+glided away to some other topic, until at last I gave it over in
+despair. It was not yet three when we found ourselves in our
+rooms once more. He hurried to his chamber and was down again in
+a few minutes dressed as a common loafer. With his collar turned
+up, his shiny, seedy coat, his red cravat, and his worn boots, he
+was a perfect sample of the class.
+
+"I think that this should do," said he, glancing into the glass
+above the fireplace. "I only wish that you could come with me,
+Watson, but I fear that it won't do. I may be on the trail in
+this matter, or I may be following a will-o'-the-wisp, but I
+shall soon know which it is. I hope that I may be back in a few
+hours." He cut a slice of beef from the joint upon the sideboard,
+sandwiched it between two rounds of bread, and thrusting this
+rude meal into his pocket he started off upon his expedition.
+
+I had just finished my tea when he returned, evidently in
+excellent spirits, swinging an old elastic-sided boot in his
+hand. He chucked it down into a corner and helped himself to a
+cup of tea.
+
+"I only looked in as I passed," said he. "I am going right on."
+
+"Where to?"
+
+"Oh, to the other side of the West End. It may be some time
+before I get back. Don't wait up for me in case I should be
+late."
+
+"How are you getting on?"
+
+"Oh, so so. Nothing to complain of. I have been out to Streatham
+since I saw you last, but I did not call at the house. It is a
+very sweet little problem, and I would not have missed it for a
+good deal. However, I must not sit gossiping here, but must get
+these disreputable clothes off and return to my highly
+respectable self."
+
+I could see by his manner that he had stronger reasons for
+satisfaction than his words alone would imply. His eyes twinkled,
+and there was even a touch of colour upon his sallow cheeks. He
+hastened upstairs, and a few minutes later I heard the slam of
+the hall door, which told me that he was off once more upon his
+congenial hunt.
+
+I waited until midnight, but there was no sign of his return, so
+I retired to my room. It was no uncommon thing for him to be away
+for days and nights on end when he was hot upon a scent, so that
+his lateness caused me no surprise. I do not know at what hour he
+came in, but when I came down to breakfast in the morning there
+he was with a cup of coffee in one hand and the paper in the
+other, as fresh and trim as possible.
+
+"You will excuse my beginning without you, Watson," said he, "but
+you remember that our client has rather an early appointment this
+morning."
+
+"Why, it is after nine now," I answered. "I should not be
+surprised if that were he. I thought I heard a ring."
+
+It was, indeed, our friend the financier. I was shocked by the
+change which had come over him, for his face which was naturally
+of a broad and massive mould, was now pinched and fallen in,
+while his hair seemed to me at least a shade whiter. He entered
+with a weariness and lethargy which was even more painful than
+his violence of the morning before, and he dropped heavily into
+the armchair which I pushed forward for him.
+
+"I do not know what I have done to be so severely tried," said
+he. "Only two days ago I was a happy and prosperous man, without
+a care in the world. Now I am left to a lonely and dishonoured
+age. One sorrow comes close upon the heels of another. My niece,
+Mary, has deserted me."
+
+"Deserted you?"
+
+"Yes. Her bed this morning had not been slept in, her room was
+empty, and a note for me lay upon the hall table. I had said to
+her last night, in sorrow and not in anger, that if she had
+married my boy all might have been well with him. Perhaps it was
+thoughtless of me to say so. It is to that remark that she refers
+in this note:
+
+"'MY DEAREST UNCLE:--I feel that I have brought trouble upon you,
+and that if I had acted differently this terrible misfortune
+might never have occurred. I cannot, with this thought in my
+mind, ever again be happy under your roof, and I feel that I must
+leave you forever. Do not worry about my future, for that is
+provided for; and, above all, do not search for me, for it will
+be fruitless labour and an ill-service to me. In life or in
+death, I am ever your loving,--MARY.'
+
+"What could she mean by that note, Mr. Holmes? Do you think it
+points to suicide?"
+
+"No, no, nothing of the kind. It is perhaps the best possible
+solution. I trust, Mr. Holder, that you are nearing the end of
+your troubles."
+
+"Ha! You say so! You have heard something, Mr. Holmes; you have
+learned something! Where are the gems?"
+
+"You would not think 1000 pounds apiece an excessive sum for
+them?"
+
+"I would pay ten."
+
+"That would be unnecessary. Three thousand will cover the matter.
+And there is a little reward, I fancy. Have you your check-book?
+Here is a pen. Better make it out for 4000 pounds."
+
+With a dazed face the banker made out the required check. Holmes
+walked over to his desk, took out a little triangular piece of
+gold with three gems in it, and threw it down upon the table.
+
+With a shriek of joy our client clutched it up.
+
+"You have it!" he gasped. "I am saved! I am saved!"
+
+The reaction of joy was as passionate as his grief had been, and
+he hugged his recovered gems to his bosom.
+
+"There is one other thing you owe, Mr. Holder," said Sherlock
+Holmes rather sternly.
+
+"Owe!" He caught up a pen. "Name the sum, and I will pay it."
+
+"No, the debt is not to me. You owe a very humble apology to that
+noble lad, your son, who has carried himself in this matter as I
+should be proud to see my own son do, should I ever chance to
+have one."
+
+"Then it was not Arthur who took them?"
+
+"I told you yesterday, and I repeat to-day, that it was not."
+
+"You are sure of it! Then let us hurry to him at once to let him
+know that the truth is known."
+
+"He knows it already. When I had cleared it all up I had an
+interview with him, and finding that he would not tell me the
+story, I told it to him, on which he had to confess that I was
+right and to add the very few details which were not yet quite
+clear to me. Your news of this morning, however, may open his
+lips."
+
+"For heaven's sake, tell me, then, what is this extraordinary
+mystery!"
+
+"I will do so, and I will show you the steps by which I reached
+it. And let me say to you, first, that which it is hardest for me
+to say and for you to hear: there has been an understanding
+between Sir George Burnwell and your niece Mary. They have now
+fled together."
+
+"My Mary? Impossible!"
+
+"It is unfortunately more than possible; it is certain. Neither
+you nor your son knew the true character of this man when you
+admitted him into your family circle. He is one of the most
+dangerous men in England--a ruined gambler, an absolutely
+desperate villain, a man without heart or conscience. Your niece
+knew nothing of such men. When he breathed his vows to her, as he
+had done to a hundred before her, she flattered herself that she
+alone had touched his heart. The devil knows best what he said,
+but at least she became his tool and was in the habit of seeing
+him nearly every evening."
+
+"I cannot, and I will not, believe it!" cried the banker with an
+ashen face.
+
+"I will tell you, then, what occurred in your house last night.
+Your niece, when you had, as she thought, gone to your room,
+slipped down and talked to her lover through the window which
+leads into the stable lane. His footmarks had pressed right
+through the snow, so long had he stood there. She told him of the
+coronet. His wicked lust for gold kindled at the news, and he
+bent her to his will. I have no doubt that she loved you, but
+there are women in whom the love of a lover extinguishes all
+other loves, and I think that she must have been one. She had
+hardly listened to his instructions when she saw you coming
+downstairs, on which she closed the window rapidly and told you
+about one of the servants' escapade with her wooden-legged lover,
+which was all perfectly true.
+
+"Your boy, Arthur, went to bed after his interview with you but
+he slept badly on account of his uneasiness about his club debts.
+In the middle of the night he heard a soft tread pass his door,
+so he rose and, looking out, was surprised to see his cousin
+walking very stealthily along the passage until she disappeared
+into your dressing-room. Petrified with astonishment, the lad
+slipped on some clothes and waited there in the dark to see what
+would come of this strange affair. Presently she emerged from the
+room again, and in the light of the passage-lamp your son saw
+that she carried the precious coronet in her hands. She passed
+down the stairs, and he, thrilling with horror, ran along and
+slipped behind the curtain near your door, whence he could see
+what passed in the hall beneath. He saw her stealthily open the
+window, hand out the coronet to someone in the gloom, and then
+closing it once more hurry back to her room, passing quite close
+to where he stood hid behind the curtain.
+
+"As long as she was on the scene he could not take any action
+without a horrible exposure of the woman whom he loved. But the
+instant that she was gone he realised how crushing a misfortune
+this would be for you, and how all-important it was to set it
+right. He rushed down, just as he was, in his bare feet, opened
+the window, sprang out into the snow, and ran down the lane,
+where he could see a dark figure in the moonlight. Sir George
+Burnwell tried to get away, but Arthur caught him, and there was
+a struggle between them, your lad tugging at one side of the
+coronet, and his opponent at the other. In the scuffle, your son
+struck Sir George and cut him over the eye. Then something
+suddenly snapped, and your son, finding that he had the coronet
+in his hands, rushed back, closed the window, ascended to your
+room, and had just observed that the coronet had been twisted in
+the struggle and was endeavouring to straighten it when you
+appeared upon the scene."
+
+"Is it possible?" gasped the banker.
+
+"You then roused his anger by calling him names at a moment when
+he felt that he had deserved your warmest thanks. He could not
+explain the true state of affairs without betraying one who
+certainly deserved little enough consideration at his hands. He
+took the more chivalrous view, however, and preserved her
+secret."
+
+"And that was why she shrieked and fainted when she saw the
+coronet," cried Mr. Holder. "Oh, my God! what a blind fool I have
+been! And his asking to be allowed to go out for five minutes!
+The dear fellow wanted to see if the missing piece were at the
+scene of the struggle. How cruelly I have misjudged him!"
+
+"When I arrived at the house," continued Holmes, "I at once went
+very carefully round it to observe if there were any traces in
+the snow which might help me. I knew that none had fallen since
+the evening before, and also that there had been a strong frost
+to preserve impressions. I passed along the tradesmen's path, but
+found it all trampled down and indistinguishable. Just beyond it,
+however, at the far side of the kitchen door, a woman had stood
+and talked with a man, whose round impressions on one side showed
+that he had a wooden leg. I could even tell that they had been
+disturbed, for the woman had run back swiftly to the door, as was
+shown by the deep toe and light heel marks, while Wooden-leg had
+waited a little, and then had gone away. I thought at the time
+that this might be the maid and her sweetheart, of whom you had
+already spoken to me, and inquiry showed it was so. I passed
+round the garden without seeing anything more than random tracks,
+which I took to be the police; but when I got into the stable
+lane a very long and complex story was written in the snow in
+front of me.
+
+"There was a double line of tracks of a booted man, and a second
+double line which I saw with delight belonged to a man with naked
+feet. I was at once convinced from what you had told me that the
+latter was your son. The first had walked both ways, but the
+other had run swiftly, and as his tread was marked in places over
+the depression of the boot, it was obvious that he had passed
+after the other. I followed them up and found they led to the
+hall window, where Boots had worn all the snow away while
+waiting. Then I walked to the other end, which was a hundred
+yards or more down the lane. I saw where Boots had faced round,
+where the snow was cut up as though there had been a struggle,
+and, finally, where a few drops of blood had fallen, to show me
+that I was not mistaken. Boots had then run down the lane, and
+another little smudge of blood showed that it was he who had been
+hurt. When he came to the highroad at the other end, I found that
+the pavement had been cleared, so there was an end to that clue.
+
+"On entering the house, however, I examined, as you remember, the
+sill and framework of the hall window with my lens, and I could
+at once see that someone had passed out. I could distinguish the
+outline of an instep where the wet foot had been placed in coming
+in. I was then beginning to be able to form an opinion as to what
+had occurred. A man had waited outside the window; someone had
+brought the gems; the deed had been overseen by your son; he had
+pursued the thief; had struggled with him; they had each tugged
+at the coronet, their united strength causing injuries which
+neither alone could have effected. He had returned with the
+prize, but had left a fragment in the grasp of his opponent. So
+far I was clear. The question now was, who was the man and who
+was it brought him the coronet?
+
+"It is an old maxim of mine that when you have excluded the
+impossible, whatever remains, however improbable, must be the
+truth. Now, I knew that it was not you who had brought it down,
+so there only remained your niece and the maids. But if it were
+the maids, why should your son allow himself to be accused in
+their place? There could be no possible reason. As he loved his
+cousin, however, there was an excellent explanation why he should
+retain her secret--the more so as the secret was a disgraceful
+one. When I remembered that you had seen her at that window, and
+how she had fainted on seeing the coronet again, my conjecture
+became a certainty.
+
+"And who could it be who was her confederate? A lover evidently,
+for who else could outweigh the love and gratitude which she must
+feel to you? I knew that you went out little, and that your
+circle of friends was a very limited one. But among them was Sir
+George Burnwell. I had heard of him before as being a man of evil
+reputation among women. It must have been he who wore those boots
+and retained the missing gems. Even though he knew that Arthur
+had discovered him, he might still flatter himself that he was
+safe, for the lad could not say a word without compromising his
+own family.
+
+"Well, your own good sense will suggest what measures I took
+next. I went in the shape of a loafer to Sir George's house,
+managed to pick up an acquaintance with his valet, learned that
+his master had cut his head the night before, and, finally, at
+the expense of six shillings, made all sure by buying a pair of
+his cast-off shoes. With these I journeyed down to Streatham and
+saw that they exactly fitted the tracks."
+
+"I saw an ill-dressed vagabond in the lane yesterday evening,"
+said Mr. Holder.
+
+"Precisely. It was I. I found that I had my man, so I came home
+and changed my clothes. It was a delicate part which I had to
+play then, for I saw that a prosecution must be avoided to avert
+scandal, and I knew that so astute a villain would see that our
+hands were tied in the matter. I went and saw him. At first, of
+course, he denied everything. But when I gave him every
+particular that had occurred, he tried to bluster and took down a
+life-preserver from the wall. I knew my man, however, and I
+clapped a pistol to his head before he could strike. Then he
+became a little more reasonable. I told him that we would give
+him a price for the stones he held--1000 pounds apiece. That
+brought out the first signs of grief that he had shown. 'Why,
+dash it all!' said he, 'I've let them go at six hundred for the
+three!' I soon managed to get the address of the receiver who had
+them, on promising him that there would be no prosecution. Off I
+set to him, and after much chaffering I got our stones at 1000
+pounds apiece. Then I looked in upon your son, told him that all
+was right, and eventually got to my bed about two o'clock, after
+what I may call a really hard day's work."
+
+"A day which has saved England from a great public scandal," said
+the banker, rising. "Sir, I cannot find words to thank you, but
+you shall not find me ungrateful for what you have done. Your
+skill has indeed exceeded all that I have heard of it. And now I
+must fly to my dear boy to apologise to him for the wrong which I
+have done him. As to what you tell me of poor Mary, it goes to my
+very heart. Not even your skill can inform me where she is now."
+
+"I think that we may safely say," returned Holmes, "that she is
+wherever Sir George Burnwell is. It is equally certain, too, that
+whatever her sins are, they will soon receive a more than
+sufficient punishment."
+
+
+
+XII. THE ADVENTURE OF THE COPPER BEECHES
+
+"To the man who loves art for its own sake," remarked Sherlock
+Holmes, tossing aside the advertisement sheet of the Daily
+Telegraph, "it is frequently in its least important and lowliest
+manifestations that the keenest pleasure is to be derived. It is
+pleasant to me to observe, Watson, that you have so far grasped
+this truth that in these little records of our cases which you
+have been good enough to draw up, and, I am bound to say,
+occasionally to embellish, you have given prominence not so much
+to the many causes célèbres and sensational trials in which I
+have figured but rather to those incidents which may have been
+trivial in themselves, but which have given room for those
+faculties of deduction and of logical synthesis which I have made
+my special province."
+
+"And yet," said I, smiling, "I cannot quite hold myself absolved
+from the charge of sensationalism which has been urged against my
+records."
+
+"You have erred, perhaps," he observed, taking up a glowing
+cinder with the tongs and lighting with it the long cherry-wood
+pipe which was wont to replace his clay when he was in a
+disputatious rather than a meditative mood--"you have erred
+perhaps in attempting to put colour and life into each of your
+statements instead of confining yourself to the task of placing
+upon record that severe reasoning from cause to effect which is
+really the only notable feature about the thing."
+
+"It seems to me that I have done you full justice in the matter,"
+I remarked with some coldness, for I was repelled by the egotism
+which I had more than once observed to be a strong factor in my
+friend's singular character.
+
+"No, it is not selfishness or conceit," said he, answering, as
+was his wont, my thoughts rather than my words. "If I claim full
+justice for my art, it is because it is an impersonal thing--a
+thing beyond myself. Crime is common. Logic is rare. Therefore it
+is upon the logic rather than upon the crime that you should
+dwell. You have degraded what should have been a course of
+lectures into a series of tales."
+
+It was a cold morning of the early spring, and we sat after
+breakfast on either side of a cheery fire in the old room at
+Baker Street. A thick fog rolled down between the lines of
+dun-coloured houses, and the opposing windows loomed like dark,
+shapeless blurs through the heavy yellow wreaths. Our gas was lit
+and shone on the white cloth and glimmer of china and metal, for
+the table had not been cleared yet. Sherlock Holmes had been
+silent all the morning, dipping continuously into the
+advertisement columns of a succession of papers until at last,
+having apparently given up his search, he had emerged in no very
+sweet temper to lecture me upon my literary shortcomings.
+
+"At the same time," he remarked after a pause, during which he
+had sat puffing at his long pipe and gazing down into the fire,
+"you can hardly be open to a charge of sensationalism, for out of
+these cases which you have been so kind as to interest yourself
+in, a fair proportion do not treat of crime, in its legal sense,
+at all. The small matter in which I endeavoured to help the King
+of Bohemia, the singular experience of Miss Mary Sutherland, the
+problem connected with the man with the twisted lip, and the
+incident of the noble bachelor, were all matters which are
+outside the pale of the law. But in avoiding the sensational, I
+fear that you may have bordered on the trivial."
+
+"The end may have been so," I answered, "but the methods I hold
+to have been novel and of interest."
+
+"Pshaw, my dear fellow, what do the public, the great unobservant
+public, who could hardly tell a weaver by his tooth or a
+compositor by his left thumb, care about the finer shades of
+analysis and deduction! But, indeed, if you are trivial, I cannot
+blame you, for the days of the great cases are past. Man, or at
+least criminal man, has lost all enterprise and originality. As
+to my own little practice, it seems to be degenerating into an
+agency for recovering lost lead pencils and giving advice to
+young ladies from boarding-schools. I think that I have touched
+bottom at last, however. This note I had this morning marks my
+zero-point, I fancy. Read it!" He tossed a crumpled letter across
+to me.
+
+It was dated from Montague Place upon the preceding evening, and
+ran thus:
+
+"DEAR MR. HOLMES:--I am very anxious to consult you as to whether
+I should or should not accept a situation which has been offered
+to me as governess. I shall call at half-past ten to-morrow if I
+do not inconvenience you. Yours faithfully,
+                                               "VIOLET HUNTER."
+
+"Do you know the young lady?" I asked.
+
+"Not I."
+
+"It is half-past ten now."
+
+"Yes, and I have no doubt that is her ring."
+
+"It may turn out to be of more interest than you think. You
+remember that the affair of the blue carbuncle, which appeared to
+be a mere whim at first, developed into a serious investigation.
+It may be so in this case, also."
+
+"Well, let us hope so. But our doubts will very soon be solved,
+for here, unless I am much mistaken, is the person in question."
+
+As he spoke the door opened and a young lady entered the room.
+She was plainly but neatly dressed, with a bright, quick face,
+freckled like a plover's egg, and with the brisk manner of a
+woman who has had her own way to make in the world.
+
+"You will excuse my troubling you, I am sure," said she, as my
+companion rose to greet her, "but I have had a very strange
+experience, and as I have no parents or relations of any sort
+from whom I could ask advice, I thought that perhaps you would be
+kind enough to tell me what I should do."
+
+"Pray take a seat, Miss Hunter. I shall be happy to do anything
+that I can to serve you."
+
+I could see that Holmes was favourably impressed by the manner
+and speech of his new client. He looked her over in his searching
+fashion, and then composed himself, with his lids drooping and
+his finger-tips together, to listen to her story.
+
+"I have been a governess for five years," said she, "in the
+family of Colonel Spence Munro, but two months ago the colonel
+received an appointment at Halifax, in Nova Scotia, and took his
+children over to America with him, so that I found myself without
+a situation. I advertised, and I answered advertisements, but
+without success. At last the little money which I had saved began
+to run short, and I was at my wit's end as to what I should do.
+
+"There is a well-known agency for governesses in the West End
+called Westaway's, and there I used to call about once a week in
+order to see whether anything had turned up which might suit me.
+Westaway was the name of the founder of the business, but it is
+really managed by Miss Stoper. She sits in her own little office,
+and the ladies who are seeking employment wait in an anteroom,
+and are then shown in one by one, when she consults her ledgers
+and sees whether she has anything which would suit them.
+
+"Well, when I called last week I was shown into the little office
+as usual, but I found that Miss Stoper was not alone. A
+prodigiously stout man with a very smiling face and a great heavy
+chin which rolled down in fold upon fold over his throat sat at
+her elbow with a pair of glasses on his nose, looking very
+earnestly at the ladies who entered. As I came in he gave quite a
+jump in his chair and turned quickly to Miss Stoper.
+
+"'That will do,' said he; 'I could not ask for anything better.
+Capital! capital!' He seemed quite enthusiastic and rubbed his
+hands together in the most genial fashion. He was such a
+comfortable-looking man that it was quite a pleasure to look at
+him.
+
+"'You are looking for a situation, miss?' he asked.
+
+"'Yes, sir.'
+
+"'As governess?'
+
+"'Yes, sir.'
+
+"'And what salary do you ask?'
+
+"'I had 4 pounds a month in my last place with Colonel Spence
+Munro.'
+
+"'Oh, tut, tut! sweating--rank sweating!' he cried, throwing his
+fat hands out into the air like a man who is in a boiling
+passion. 'How could anyone offer so pitiful a sum to a lady with
+such attractions and accomplishments?'
+
+"'My accomplishments, sir, may be less than you imagine,' said I.
+'A little French, a little German, music, and drawing--'
+
+"'Tut, tut!' he cried. 'This is all quite beside the question.
+The point is, have you or have you not the bearing and deportment
+of a lady? There it is in a nutshell. If you have not, you are
+not fitted for the rearing of a child who may some day play a
+considerable part in the history of the country. But if you have
+why, then, how could any gentleman ask you to condescend to
+accept anything under the three figures? Your salary with me,
+madam, would commence at 100 pounds a year.'
+
+"You may imagine, Mr. Holmes, that to me, destitute as I was,
+such an offer seemed almost too good to be true. The gentleman,
+however, seeing perhaps the look of incredulity upon my face,
+opened a pocket-book and took out a note.
+
+"'It is also my custom,' said he, smiling in the most pleasant
+fashion until his eyes were just two little shining slits amid
+the white creases of his face, 'to advance to my young ladies
+half their salary beforehand, so that they may meet any little
+expenses of their journey and their wardrobe.'
+
+"It seemed to me that I had never met so fascinating and so
+thoughtful a man. As I was already in debt to my tradesmen, the
+advance was a great convenience, and yet there was something
+unnatural about the whole transaction which made me wish to know
+a little more before I quite committed myself.
+
+"'May I ask where you live, sir?' said I.
+
+"'Hampshire. Charming rural place. The Copper Beeches, five miles
+on the far side of Winchester. It is the most lovely country, my
+dear young lady, and the dearest old country-house.'
+
+"'And my duties, sir? I should be glad to know what they would
+be.'
+
+"'One child--one dear little romper just six years old. Oh, if
+you could see him killing cockroaches with a slipper! Smack!
+smack! smack! Three gone before you could wink!' He leaned back
+in his chair and laughed his eyes into his head again.
+
+"I was a little startled at the nature of the child's amusement,
+but the father's laughter made me think that perhaps he was
+joking.
+
+"'My sole duties, then,' I asked, 'are to take charge of a single
+child?'
+
+"'No, no, not the sole, not the sole, my dear young lady,' he
+cried. 'Your duty would be, as I am sure your good sense would
+suggest, to obey any little commands my wife might give, provided
+always that they were such commands as a lady might with
+propriety obey. You see no difficulty, heh?'
+
+"'I should be happy to make myself useful.'
+
+"'Quite so. In dress now, for example. We are faddy people, you
+know--faddy but kind-hearted. If you were asked to wear any dress
+which we might give you, you would not object to our little whim.
+Heh?'
+
+"'No,' said I, considerably astonished at his words.
+
+"'Or to sit here, or sit there, that would not be offensive to
+you?'
+
+"'Oh, no.'
+
+"'Or to cut your hair quite short before you come to us?'
+
+"I could hardly believe my ears. As you may observe, Mr. Holmes,
+my hair is somewhat luxuriant, and of a rather peculiar tint of
+chestnut. It has been considered artistic. I could not dream of
+sacrificing it in this offhand fashion.
+
+"'I am afraid that that is quite impossible,' said I. He had been
+watching me eagerly out of his small eyes, and I could see a
+shadow pass over his face as I spoke.
+
+"'I am afraid that it is quite essential,' said he. 'It is a
+little fancy of my wife's, and ladies' fancies, you know, madam,
+ladies' fancies must be consulted. And so you won't cut your
+hair?'
+
+"'No, sir, I really could not,' I answered firmly.
+
+"'Ah, very well; then that quite settles the matter. It is a
+pity, because in other respects you would really have done very
+nicely. In that case, Miss Stoper, I had best inspect a few more
+of your young ladies.'
+
+"The manageress had sat all this while busy with her papers
+without a word to either of us, but she glanced at me now with so
+much annoyance upon her face that I could not help suspecting
+that she had lost a handsome commission through my refusal.
+
+"'Do you desire your name to be kept upon the books?' she asked.
+
+"'If you please, Miss Stoper.'
+
+"'Well, really, it seems rather useless, since you refuse the
+most excellent offers in this fashion,' said she sharply. 'You
+can hardly expect us to exert ourselves to find another such
+opening for you. Good-day to you, Miss Hunter.' She struck a gong
+upon the table, and I was shown out by the page.
+
+"Well, Mr. Holmes, when I got back to my lodgings and found
+little enough in the cupboard, and two or three bills upon the
+table, I began to ask myself whether I had not done a very
+foolish thing. After all, if these people had strange fads and
+expected obedience on the most extraordinary matters, they were
+at least ready to pay for their eccentricity. Very few
+governesses in England are getting 100 pounds a year. Besides,
+what use was my hair to me? Many people are improved by wearing
+it short and perhaps I should be among the number. Next day I was
+inclined to think that I had made a mistake, and by the day after
+I was sure of it. I had almost overcome my pride so far as to go
+back to the agency and inquire whether the place was still open
+when I received this letter from the gentleman himself. I have it
+here and I will read it to you:
+
+                       "'The Copper Beeches, near Winchester.
+"'DEAR MISS HUNTER:--Miss Stoper has very kindly given me your
+address, and I write from here to ask you whether you have
+reconsidered your decision. My wife is very anxious that you
+should come, for she has been much attracted by my description of
+you. We are willing to give 30 pounds a quarter, or 120 pounds a
+year, so as to recompense you for any little inconvenience which
+our fads may cause you. They are not very exacting, after all. My
+wife is fond of a particular shade of electric blue and would
+like you to wear such a dress indoors in the morning. You need
+not, however, go to the expense of purchasing one, as we have one
+belonging to my dear daughter Alice (now in Philadelphia), which
+would, I should think, fit you very well. Then, as to sitting
+here or there, or amusing yourself in any manner indicated, that
+need cause you no inconvenience. As regards your hair, it is no
+doubt a pity, especially as I could not help remarking its beauty
+during our short interview, but I am afraid that I must remain
+firm upon this point, and I only hope that the increased salary
+may recompense you for the loss. Your duties, as far as the child
+is concerned, are very light. Now do try to come, and I shall
+meet you with the dog-cart at Winchester. Let me know your train.
+Yours faithfully, JEPHRO RUCASTLE.'
+
+"That is the letter which I have just received, Mr. Holmes, and
+my mind is made up that I will accept it. I thought, however,
+that before taking the final step I should like to submit the
+whole matter to your consideration."
+
+"Well, Miss Hunter, if your mind is made up, that settles the
+question," said Holmes, smiling.
+
+"But you would not advise me to refuse?"
+
+"I confess that it is not the situation which I should like to
+see a sister of mine apply for."
+
+"What is the meaning of it all, Mr. Holmes?"
+
+"Ah, I have no data. I cannot tell. Perhaps you have yourself
+formed some opinion?"
+
+"Well, there seems to me to be only one possible solution. Mr.
+Rucastle seemed to be a very kind, good-natured man. Is it not
+possible that his wife is a lunatic, that he desires to keep the
+matter quiet for fear she should be taken to an asylum, and that
+he humours her fancies in every way in order to prevent an
+outbreak?"
+
+"That is a possible solution--in fact, as matters stand, it is
+the most probable one. But in any case it does not seem to be a
+nice household for a young lady."
+
+"But the money, Mr. Holmes, the money!"
+
+"Well, yes, of course the pay is good--too good. That is what
+makes me uneasy. Why should they give you 120 pounds a year, when
+they could have their pick for 40 pounds? There must be some
+strong reason behind."
+
+"I thought that if I told you the circumstances you would
+understand afterwards if I wanted your help. I should feel so
+much stronger if I felt that you were at the back of me."
+
+"Oh, you may carry that feeling away with you. I assure you that
+your little problem promises to be the most interesting which has
+come my way for some months. There is something distinctly novel
+about some of the features. If you should find yourself in doubt
+or in danger--"
+
+"Danger! What danger do you foresee?"
+
+Holmes shook his head gravely. "It would cease to be a danger if
+we could define it," said he. "But at any time, day or night, a
+telegram would bring me down to your help."
+
+"That is enough." She rose briskly from her chair with the
+anxiety all swept from her face. "I shall go down to Hampshire
+quite easy in my mind now. I shall write to Mr. Rucastle at once,
+sacrifice my poor hair to-night, and start for Winchester
+to-morrow." With a few grateful words to Holmes she bade us both
+good-night and bustled off upon her way.
+
+"At least," said I as we heard her quick, firm steps descending
+the stairs, "she seems to be a young lady who is very well able
+to take care of herself."
+
+"And she would need to be," said Holmes gravely. "I am much
+mistaken if we do not hear from her before many days are past."
+
+It was not very long before my friend's prediction was fulfilled.
+A fortnight went by, during which I frequently found my thoughts
+turning in her direction and wondering what strange side-alley of
+human experience this lonely woman had strayed into. The unusual
+salary, the curious conditions, the light duties, all pointed to
+something abnormal, though whether a fad or a plot, or whether
+the man were a philanthropist or a villain, it was quite beyond
+my powers to determine. As to Holmes, I observed that he sat
+frequently for half an hour on end, with knitted brows and an
+abstracted air, but he swept the matter away with a wave of his
+hand when I mentioned it. "Data! data! data!" he cried
+impatiently. "I can't make bricks without clay." And yet he would
+always wind up by muttering that no sister of his should ever
+have accepted such a situation.
+
+The telegram which we eventually received came late one night
+just as I was thinking of turning in and Holmes was settling down
+to one of those all-night chemical researches which he frequently
+indulged in, when I would leave him stooping over a retort and a
+test-tube at night and find him in the same position when I came
+down to breakfast in the morning. He opened the yellow envelope,
+and then, glancing at the message, threw it across to me.
+
+"Just look up the trains in Bradshaw," said he, and turned back
+to his chemical studies.
+
+The summons was a brief and urgent one.
+
+"Please be at the Black Swan Hotel at Winchester at midday
+to-morrow," it said. "Do come! I am at my wit's end.  HUNTER."
+
+"Will you come with me?" asked Holmes, glancing up.
+
+"I should wish to."
+
+"Just look it up, then."
+
+"There is a train at half-past nine," said I, glancing over my
+Bradshaw. "It is due at Winchester at 11:30."
+
+"That will do very nicely. Then perhaps I had better postpone my
+analysis of the acetones, as we may need to be at our best in the
+morning."
+
+By eleven o'clock the next day we were well upon our way to the
+old English capital. Holmes had been buried in the morning papers
+all the way down, but after we had passed the Hampshire border he
+threw them down and began to admire the scenery. It was an ideal
+spring day, a light blue sky, flecked with little fleecy white
+clouds drifting across from west to east. The sun was shining
+very brightly, and yet there was an exhilarating nip in the air,
+which set an edge to a man's energy. All over the countryside,
+away to the rolling hills around Aldershot, the little red and
+grey roofs of the farm-steadings peeped out from amid the light
+green of the new foliage.
+
+"Are they not fresh and beautiful?" I cried with all the
+enthusiasm of a man fresh from the fogs of Baker Street.
+
+But Holmes shook his head gravely.
+
+"Do you know, Watson," said he, "that it is one of the curses of
+a mind with a turn like mine that I must look at everything with
+reference to my own special subject. You look at these scattered
+houses, and you are impressed by their beauty. I look at them,
+and the only thought which comes to me is a feeling of their
+isolation and of the impunity with which crime may be committed
+there."
+
+"Good heavens!" I cried. "Who would associate crime with these
+dear old homesteads?"
+
+"They always fill me with a certain horror. It is my belief,
+Watson, founded upon my experience, that the lowest and vilest
+alleys in London do not present a more dreadful record of sin
+than does the smiling and beautiful countryside."
+
+"You horrify me!"
+
+"But the reason is very obvious. The pressure of public opinion
+can do in the town what the law cannot accomplish. There is no
+lane so vile that the scream of a tortured child, or the thud of
+a drunkard's blow, does not beget sympathy and indignation among
+the neighbours, and then the whole machinery of justice is ever
+so close that a word of complaint can set it going, and there is
+but a step between the crime and the dock. But look at these
+lonely houses, each in its own fields, filled for the most part
+with poor ignorant folk who know little of the law. Think of the
+deeds of hellish cruelty, the hidden wickedness which may go on,
+year in, year out, in such places, and none the wiser. Had this
+lady who appeals to us for help gone to live in Winchester, I
+should never have had a fear for her. It is the five miles of
+country which makes the danger. Still, it is clear that she is
+not personally threatened."
+
+"No. If she can come to Winchester to meet us she can get away."
+
+"Quite so. She has her freedom."
+
+"What CAN be the matter, then? Can you suggest no explanation?"
+
+"I have devised seven separate explanations, each of which would
+cover the facts as far as we know them. But which of these is
+correct can only be determined by the fresh information which we
+shall no doubt find waiting for us. Well, there is the tower of
+the cathedral, and we shall soon learn all that Miss Hunter has
+to tell."
+
+The Black Swan is an inn of repute in the High Street, at no
+distance from the station, and there we found the young lady
+waiting for us. She had engaged a sitting-room, and our lunch
+awaited us upon the table.
+
+"I am so delighted that you have come," she said earnestly. "It
+is so very kind of you both; but indeed I do not know what I
+should do. Your advice will be altogether invaluable to me."
+
+"Pray tell us what has happened to you."
+
+"I will do so, and I must be quick, for I have promised Mr.
+Rucastle to be back before three. I got his leave to come into
+town this morning, though he little knew for what purpose."
+
+"Let us have everything in its due order." Holmes thrust his long
+thin legs out towards the fire and composed himself to listen.
+
+"In the first place, I may say that I have met, on the whole,
+with no actual ill-treatment from Mr. and Mrs. Rucastle. It is
+only fair to them to say that. But I cannot understand them, and
+I am not easy in my mind about them."
+
+"What can you not understand?"
+
+"Their reasons for their conduct. But you shall have it all just
+as it occurred. When I came down, Mr. Rucastle met me here and
+drove me in his dog-cart to the Copper Beeches. It is, as he
+said, beautifully situated, but it is not beautiful in itself,
+for it is a large square block of a house, whitewashed, but all
+stained and streaked with damp and bad weather. There are grounds
+round it, woods on three sides, and on the fourth a field which
+slopes down to the Southampton highroad, which curves past about
+a hundred yards from the front door. This ground in front belongs
+to the house, but the woods all round are part of Lord
+Southerton's preserves. A clump of copper beeches immediately in
+front of the hall door has given its name to the place.
+
+"I was driven over by my employer, who was as amiable as ever,
+and was introduced by him that evening to his wife and the child.
+There was no truth, Mr. Holmes, in the conjecture which seemed to
+us to be probable in your rooms at Baker Street. Mrs. Rucastle is
+not mad. I found her to be a silent, pale-faced woman, much
+younger than her husband, not more than thirty, I should think,
+while he can hardly be less than forty-five. From their
+conversation I have gathered that they have been married about
+seven years, that he was a widower, and that his only child by
+the first wife was the daughter who has gone to Philadelphia. Mr.
+Rucastle told me in private that the reason why she had left them
+was that she had an unreasoning aversion to her stepmother. As
+the daughter could not have been less than twenty, I can quite
+imagine that her position must have been uncomfortable with her
+father's young wife.
+
+"Mrs. Rucastle seemed to me to be colourless in mind as well as
+in feature. She impressed me neither favourably nor the reverse.
+She was a nonentity. It was easy to see that she was passionately
+devoted both to her husband and to her little son. Her light grey
+eyes wandered continually from one to the other, noting every
+little want and forestalling it if possible. He was kind to her
+also in his bluff, boisterous fashion, and on the whole they
+seemed to be a happy couple. And yet she had some secret sorrow,
+this woman. She would often be lost in deep thought, with the
+saddest look upon her face. More than once I have surprised her
+in tears. I have thought sometimes that it was the disposition of
+her child which weighed upon her mind, for I have never met so
+utterly spoiled and so ill-natured a little creature. He is small
+for his age, with a head which is quite disproportionately large.
+His whole life appears to be spent in an alternation between
+savage fits of passion and gloomy intervals of sulking. Giving
+pain to any creature weaker than himself seems to be his one idea
+of amusement, and he shows quite remarkable talent in planning
+the capture of mice, little birds, and insects. But I would
+rather not talk about the creature, Mr. Holmes, and, indeed, he
+has little to do with my story."
+
+"I am glad of all details," remarked my friend, "whether they
+seem to you to be relevant or not."
+
+"I shall try not to miss anything of importance. The one
+unpleasant thing about the house, which struck me at once, was
+the appearance and conduct of the servants. There are only two, a
+man and his wife. Toller, for that is his name, is a rough,
+uncouth man, with grizzled hair and whiskers, and a perpetual
+smell of drink. Twice since I have been with them he has been
+quite drunk, and yet Mr. Rucastle seemed to take no notice of it.
+His wife is a very tall and strong woman with a sour face, as
+silent as Mrs. Rucastle and much less amiable. They are a most
+unpleasant couple, but fortunately I spend most of my time in the
+nursery and my own room, which are next to each other in one
+corner of the building.
+
+"For two days after my arrival at the Copper Beeches my life was
+very quiet; on the third, Mrs. Rucastle came down just after
+breakfast and whispered something to her husband.
+
+"'Oh, yes,' said he, turning to me, 'we are very much obliged to
+you, Miss Hunter, for falling in with our whims so far as to cut
+your hair. I assure you that it has not detracted in the tiniest
+iota from your appearance. We shall now see how the electric-blue
+dress will become you. You will find it laid out upon the bed in
+your room, and if you would be so good as to put it on we should
+both be extremely obliged.'
+
+"The dress which I found waiting for me was of a peculiar shade
+of blue. It was of excellent material, a sort of beige, but it
+bore unmistakable signs of having been worn before. It could not
+have been a better fit if I had been measured for it. Both Mr.
+and Mrs. Rucastle expressed a delight at the look of it, which
+seemed quite exaggerated in its vehemence. They were waiting for
+me in the drawing-room, which is a very large room, stretching
+along the entire front of the house, with three long windows
+reaching down to the floor. A chair had been placed close to the
+central window, with its back turned towards it. In this I was
+asked to sit, and then Mr. Rucastle, walking up and down on the
+other side of the room, began to tell me a series of the funniest
+stories that I have ever listened to. You cannot imagine how
+comical he was, and I laughed until I was quite weary. Mrs.
+Rucastle, however, who has evidently no sense of humour, never so
+much as smiled, but sat with her hands in her lap, and a sad,
+anxious look upon her face. After an hour or so, Mr. Rucastle
+suddenly remarked that it was time to commence the duties of the
+day, and that I might change my dress and go to little Edward in
+the nursery.
+
+"Two days later this same performance was gone through under
+exactly similar circumstances. Again I changed my dress, again I
+sat in the window, and again I laughed very heartily at the funny
+stories of which my employer had an immense répertoire, and which
+he told inimitably. Then he handed me a yellow-backed novel, and
+moving my chair a little sideways, that my own shadow might not
+fall upon the page, he begged me to read aloud to him. I read for
+about ten minutes, beginning in the heart of a chapter, and then
+suddenly, in the middle of a sentence, he ordered me to cease and
+to change my dress.
+
+"You can easily imagine, Mr. Holmes, how curious I became as to
+what the meaning of this extraordinary performance could possibly
+be. They were always very careful, I observed, to turn my face
+away from the window, so that I became consumed with the desire
+to see what was going on behind my back. At first it seemed to be
+impossible, but I soon devised a means. My hand-mirror had been
+broken, so a happy thought seized me, and I concealed a piece of
+the glass in my handkerchief. On the next occasion, in the midst
+of my laughter, I put my handkerchief up to my eyes, and was able
+with a little management to see all that there was behind me. I
+confess that I was disappointed. There was nothing. At least that
+was my first impression. At the second glance, however, I
+perceived that there was a man standing in the Southampton Road,
+a small bearded man in a grey suit, who seemed to be looking in
+my direction. The road is an important highway, and there are
+usually people there. This man, however, was leaning against the
+railings which bordered our field and was looking earnestly up. I
+lowered my handkerchief and glanced at Mrs. Rucastle to find her
+eyes fixed upon me with a most searching gaze. She said nothing,
+but I am convinced that she had divined that I had a mirror in my
+hand and had seen what was behind me. She rose at once.
+
+"'Jephro,' said she, 'there is an impertinent fellow upon the
+road there who stares up at Miss Hunter.'
+
+"'No friend of yours, Miss Hunter?' he asked.
+
+"'No, I know no one in these parts.'
+
+"'Dear me! How very impertinent! Kindly turn round and motion to
+him to go away.'
+
+"'Surely it would be better to take no notice.'
+
+"'No, no, we should have him loitering here always. Kindly turn
+round and wave him away like that.'
+
+"I did as I was told, and at the same instant Mrs. Rucastle drew
+down the blind. That was a week ago, and from that time I have
+not sat again in the window, nor have I worn the blue dress, nor
+seen the man in the road."
+
+"Pray continue," said Holmes. "Your narrative promises to be a
+most interesting one."
+
+"You will find it rather disconnected, I fear, and there may
+prove to be little relation between the different incidents of
+which I speak. On the very first day that I was at the Copper
+Beeches, Mr. Rucastle took me to a small outhouse which stands
+near the kitchen door. As we approached it I heard the sharp
+rattling of a chain, and the sound as of a large animal moving
+about.
+
+"'Look in here!' said Mr. Rucastle, showing me a slit between two
+planks. 'Is he not a beauty?'
+
+"I looked through and was conscious of two glowing eyes, and of a
+vague figure huddled up in the darkness.
+
+"'Don't be frightened,' said my employer, laughing at the start
+which I had given. 'It's only Carlo, my mastiff. I call him mine,
+but really old Toller, my groom, is the only man who can do
+anything with him. We feed him once a day, and not too much then,
+so that he is always as keen as mustard. Toller lets him loose
+every night, and God help the trespasser whom he lays his fangs
+upon. For goodness' sake don't you ever on any pretext set your
+foot over the threshold at night, for it's as much as your life
+is worth.'
+
+"The warning was no idle one, for two nights later I happened to
+look out of my bedroom window about two o'clock in the morning.
+It was a beautiful moonlight night, and the lawn in front of the
+house was silvered over and almost as bright as day. I was
+standing, rapt in the peaceful beauty of the scene, when I was
+aware that something was moving under the shadow of the copper
+beeches. As it emerged into the moonshine I saw what it was. It
+was a giant dog, as large as a calf, tawny tinted, with hanging
+jowl, black muzzle, and huge projecting bones. It walked slowly
+across the lawn and vanished into the shadow upon the other side.
+That dreadful sentinel sent a chill to my heart which I do not
+think that any burglar could have done.
+
+"And now I have a very strange experience to tell you. I had, as
+you know, cut off my hair in London, and I had placed it in a
+great coil at the bottom of my trunk. One evening, after the
+child was in bed, I began to amuse myself by examining the
+furniture of my room and by rearranging my own little things.
+There was an old chest of drawers in the room, the two upper ones
+empty and open, the lower one locked. I had filled the first two
+with my linen, and as I had still much to pack away I was
+naturally annoyed at not having the use of the third drawer. It
+struck me that it might have been fastened by a mere oversight,
+so I took out my bunch of keys and tried to open it. The very
+first key fitted to perfection, and I drew the drawer open. There
+was only one thing in it, but I am sure that you would never
+guess what it was. It was my coil of hair.
+
+"I took it up and examined it. It was of the same peculiar tint,
+and the same thickness. But then the impossibility of the thing
+obtruded itself upon me. How could my hair have been locked in
+the drawer? With trembling hands I undid my trunk, turned out the
+contents, and drew from the bottom my own hair. I laid the two
+tresses together, and I assure you that they were identical. Was
+it not extraordinary? Puzzle as I would, I could make nothing at
+all of what it meant. I returned the strange hair to the drawer,
+and I said nothing of the matter to the Rucastles as I felt that
+I had put myself in the wrong by opening a drawer which they had
+locked.
+
+"I am naturally observant, as you may have remarked, Mr. Holmes,
+and I soon had a pretty good plan of the whole house in my head.
+There was one wing, however, which appeared not to be inhabited
+at all. A door which faced that which led into the quarters of
+the Tollers opened into this suite, but it was invariably locked.
+One day, however, as I ascended the stair, I met Mr. Rucastle
+coming out through this door, his keys in his hand, and a look on
+his face which made him a very different person to the round,
+jovial man to whom I was accustomed. His cheeks were red, his
+brow was all crinkled with anger, and the veins stood out at his
+temples with passion. He locked the door and hurried past me
+without a word or a look.
+
+"This aroused my curiosity, so when I went out for a walk in the
+grounds with my charge, I strolled round to the side from which I
+could see the windows of this part of the house. There were four
+of them in a row, three of which were simply dirty, while the
+fourth was shuttered up. They were evidently all deserted. As I
+strolled up and down, glancing at them occasionally, Mr. Rucastle
+came out to me, looking as merry and jovial as ever.
+
+"'Ah!' said he, 'you must not think me rude if I passed you
+without a word, my dear young lady. I was preoccupied with
+business matters.'
+
+"I assured him that I was not offended. 'By the way,' said I,
+'you seem to have quite a suite of spare rooms up there, and one
+of them has the shutters up.'
+
+"He looked surprised and, as it seemed to me, a little startled
+at my remark.
+
+"'Photography is one of my hobbies,' said he. 'I have made my
+dark room up there. But, dear me! what an observant young lady we
+have come upon. Who would have believed it? Who would have ever
+believed it?' He spoke in a jesting tone, but there was no jest
+in his eyes as he looked at me. I read suspicion there and
+annoyance, but no jest.
+
+"Well, Mr. Holmes, from the moment that I understood that there
+was something about that suite of rooms which I was not to know,
+I was all on fire to go over them. It was not mere curiosity,
+though I have my share of that. It was more a feeling of duty--a
+feeling that some good might come from my penetrating to this
+place. They talk of woman's instinct; perhaps it was woman's
+instinct which gave me that feeling. At any rate, it was there,
+and I was keenly on the lookout for any chance to pass the
+forbidden door.
+
+"It was only yesterday that the chance came. I may tell you that,
+besides Mr. Rucastle, both Toller and his wife find something to
+do in these deserted rooms, and I once saw him carrying a large
+black linen bag with him through the door. Recently he has been
+drinking hard, and yesterday evening he was very drunk; and when
+I came upstairs there was the key in the door. I have no doubt at
+all that he had left it there. Mr. and Mrs. Rucastle were both
+downstairs, and the child was with them, so that I had an
+admirable opportunity. I turned the key gently in the lock,
+opened the door, and slipped through.
+
+"There was a little passage in front of me, unpapered and
+uncarpeted, which turned at a right angle at the farther end.
+Round this corner were three doors in a line, the first and third
+of which were open. They each led into an empty room, dusty and
+cheerless, with two windows in the one and one in the other, so
+thick with dirt that the evening light glimmered dimly through
+them. The centre door was closed, and across the outside of it
+had been fastened one of the broad bars of an iron bed, padlocked
+at one end to a ring in the wall, and fastened at the other with
+stout cord. The door itself was locked as well, and the key was
+not there. This barricaded door corresponded clearly with the
+shuttered window outside, and yet I could see by the glimmer from
+beneath it that the room was not in darkness. Evidently there was
+a skylight which let in light from above. As I stood in the
+passage gazing at the sinister door and wondering what secret it
+might veil, I suddenly heard the sound of steps within the room
+and saw a shadow pass backward and forward against the little
+slit of dim light which shone out from under the door. A mad,
+unreasoning terror rose up in me at the sight, Mr. Holmes. My
+overstrung nerves failed me suddenly, and I turned and ran--ran
+as though some dreadful hand were behind me clutching at the
+skirt of my dress. I rushed down the passage, through the door,
+and straight into the arms of Mr. Rucastle, who was waiting
+outside.
+
+"'So,' said he, smiling, 'it was you, then. I thought that it
+must be when I saw the door open.'
+
+"'Oh, I am so frightened!' I panted.
+
+"'My dear young lady! my dear young lady!'--you cannot think how
+caressing and soothing his manner was--'and what has frightened
+you, my dear young lady?'
+
+"But his voice was just a little too coaxing. He overdid it. I
+was keenly on my guard against him.
+
+"'I was foolish enough to go into the empty wing,' I answered.
+'But it is so lonely and eerie in this dim light that I was
+frightened and ran out again. Oh, it is so dreadfully still in
+there!'
+
+"'Only that?' said he, looking at me keenly.
+
+"'Why, what did you think?' I asked.
+
+"'Why do you think that I lock this door?'
+
+"'I am sure that I do not know.'
+
+"'It is to keep people out who have no business there. Do you
+see?' He was still smiling in the most amiable manner.
+
+"'I am sure if I had known--'
+
+"'Well, then, you know now. And if you ever put your foot over
+that threshold again'--here in an instant the smile hardened into
+a grin of rage, and he glared down at me with the face of a
+demon--'I'll throw you to the mastiff.'
+
+"I was so terrified that I do not know what I did. I suppose that
+I must have rushed past him into my room. I remember nothing
+until I found myself lying on my bed trembling all over. Then I
+thought of you, Mr. Holmes. I could not live there longer without
+some advice. I was frightened of the house, of the man, of the
+woman, of the servants, even of the child. They were all horrible
+to me. If I could only bring you down all would be well. Of
+course I might have fled from the house, but my curiosity was
+almost as strong as my fears. My mind was soon made up. I would
+send you a wire. I put on my hat and cloak, went down to the
+office, which is about half a mile from the house, and then
+returned, feeling very much easier. A horrible doubt came into my
+mind as I approached the door lest the dog might be loose, but I
+remembered that Toller had drunk himself into a state of
+insensibility that evening, and I knew that he was the only one
+in the household who had any influence with the savage creature,
+or who would venture to set him free. I slipped in in safety and
+lay awake half the night in my joy at the thought of seeing you.
+I had no difficulty in getting leave to come into Winchester this
+morning, but I must be back before three o'clock, for Mr. and
+Mrs. Rucastle are going on a visit, and will be away all the
+evening, so that I must look after the child. Now I have told you
+all my adventures, Mr. Holmes, and I should be very glad if you
+could tell me what it all means, and, above all, what I should
+do."
+
+Holmes and I had listened spellbound to this extraordinary story.
+My friend rose now and paced up and down the room, his hands in
+his pockets, and an expression of the most profound gravity upon
+his face.
+
+"Is Toller still drunk?" he asked.
+
+"Yes. I heard his wife tell Mrs. Rucastle that she could do
+nothing with him."
+
+"That is well. And the Rucastles go out to-night?"
+
+"Yes."
+
+"Is there a cellar with a good strong lock?"
+
+"Yes, the wine-cellar."
+
+"You seem to me to have acted all through this matter like a very
+brave and sensible girl, Miss Hunter. Do you think that you could
+perform one more feat? I should not ask it of you if I did not
+think you a quite exceptional woman."
+
+"I will try. What is it?"
+
+"We shall be at the Copper Beeches by seven o'clock, my friend
+and I. The Rucastles will be gone by that time, and Toller will,
+we hope, be incapable. There only remains Mrs. Toller, who might
+give the alarm. If you could send her into the cellar on some
+errand, and then turn the key upon her, you would facilitate
+matters immensely."
+
+"I will do it."
+
+"Excellent! We shall then look thoroughly into the affair. Of
+course there is only one feasible explanation. You have been
+brought there to personate someone, and the real person is
+imprisoned in this chamber. That is obvious. As to who this
+prisoner is, I have no doubt that it is the daughter, Miss Alice
+Rucastle, if I remember right, who was said to have gone to
+America. You were chosen, doubtless, as resembling her in height,
+figure, and the colour of your hair. Hers had been cut off, very
+possibly in some illness through which she has passed, and so, of
+course, yours had to be sacrificed also. By a curious chance you
+came upon her tresses. The man in the road was undoubtedly some
+friend of hers--possibly her fiancé--and no doubt, as you wore
+the girl's dress and were so like her, he was convinced from your
+laughter, whenever he saw you, and afterwards from your gesture,
+that Miss Rucastle was perfectly happy, and that she no longer
+desired his attentions. The dog is let loose at night to prevent
+him from endeavouring to communicate with her. So much is fairly
+clear. The most serious point in the case is the disposition of
+the child."
+
+"What on earth has that to do with it?" I ejaculated.
+
+"My dear Watson, you as a medical man are continually gaining
+light as to the tendencies of a child by the study of the
+parents. Don't you see that the converse is equally valid. I have
+frequently gained my first real insight into the character of
+parents by studying their children. This child's disposition is
+abnormally cruel, merely for cruelty's sake, and whether he
+derives this from his smiling father, as I should suspect, or
+from his mother, it bodes evil for the poor girl who is in their
+power."
+
+"I am sure that you are right, Mr. Holmes," cried our client. "A
+thousand things come back to me which make me certain that you
+have hit it. Oh, let us lose not an instant in bringing help to
+this poor creature."
+
+"We must be circumspect, for we are dealing with a very cunning
+man. We can do nothing until seven o'clock. At that hour we shall
+be with you, and it will not be long before we solve the
+mystery."
+
+We were as good as our word, for it was just seven when we
+reached the Copper Beeches, having put up our trap at a wayside
+public-house. The group of trees, with their dark leaves shining
+like burnished metal in the light of the setting sun, were
+sufficient to mark the house even had Miss Hunter not been
+standing smiling on the door-step.
+
+"Have you managed it?" asked Holmes.
+
+A loud thudding noise came from somewhere downstairs. "That is
+Mrs. Toller in the cellar," said she. "Her husband lies snoring
+on the kitchen rug. Here are his keys, which are the duplicates
+of Mr. Rucastle's."
+
+"You have done well indeed!" cried Holmes with enthusiasm. "Now
+lead the way, and we shall soon see the end of this black
+business."
+
+We passed up the stair, unlocked the door, followed on down a
+passage, and found ourselves in front of the barricade which Miss
+Hunter had described. Holmes cut the cord and removed the
+transverse bar. Then he tried the various keys in the lock, but
+without success. No sound came from within, and at the silence
+Holmes' face clouded over.
+
+"I trust that we are not too late," said he. "I think, Miss
+Hunter, that we had better go in without you. Now, Watson, put
+your shoulder to it, and we shall see whether we cannot make our
+way in."
+
+It was an old rickety door and gave at once before our united
+strength. Together we rushed into the room. It was empty. There
+was no furniture save a little pallet bed, a small table, and a
+basketful of linen. The skylight above was open, and the prisoner
+gone.
+
+"There has been some villainy here," said Holmes; "this beauty
+has guessed Miss Hunter's intentions and has carried his victim
+off."
+
+"But how?"
+
+"Through the skylight. We shall soon see how he managed it." He
+swung himself up onto the roof. "Ah, yes," he cried, "here's the
+end of a long light ladder against the eaves. That is how he did
+it."
+
+"But it is impossible," said Miss Hunter; "the ladder was not
+there when the Rucastles went away."
+
+"He has come back and done it. I tell you that he is a clever and
+dangerous man. I should not be very much surprised if this were
+he whose step I hear now upon the stair. I think, Watson, that it
+would be as well for you to have your pistol ready."
+
+The words were hardly out of his mouth before a man appeared at
+the door of the room, a very fat and burly man, with a heavy
+stick in his hand. Miss Hunter screamed and shrunk against the
+wall at the sight of him, but Sherlock Holmes sprang forward and
+confronted him.
+
+"You villain!" said he, "where's your daughter?"
+
+The fat man cast his eyes round, and then up at the open
+skylight.
+
+"It is for me to ask you that," he shrieked, "you thieves! Spies
+and thieves! I have caught you, have I? You are in my power. I'll
+serve you!" He turned and clattered down the stairs as hard as he
+could go.
+
+"He's gone for the dog!" cried Miss Hunter.
+
+"I have my revolver," said I.
+
+"Better close the front door," cried Holmes, and we all rushed
+down the stairs together. We had hardly reached the hall when we
+heard the baying of a hound, and then a scream of agony, with a
+horrible worrying sound which it was dreadful to listen to. An
+elderly man with a red face and shaking limbs came staggering out
+at a side door.
+
+"My God!" he cried. "Someone has loosed the dog. It's not been
+fed for two days. Quick, quick, or it'll be too late!"
+
+Holmes and I rushed out and round the angle of the house, with
+Toller hurrying behind us. There was the huge famished brute, its
+black muzzle buried in Rucastle's throat, while he writhed and
+screamed upon the ground. Running up, I blew its brains out, and
+it fell over with its keen white teeth still meeting in the great
+creases of his neck. With much labour we separated them and
+carried him, living but horribly mangled, into the house. We laid
+him upon the drawing-room sofa, and having dispatched the sobered
+Toller to bear the news to his wife, I did what I could to
+relieve his pain. We were all assembled round him when the door
+opened, and a tall, gaunt woman entered the room.
+
+"Mrs. Toller!" cried Miss Hunter.
+
+"Yes, miss. Mr. Rucastle let me out when he came back before he
+went up to you. Ah, miss, it is a pity you didn't let me know
+what you were planning, for I would have told you that your pains
+were wasted."
+
+"Ha!" said Holmes, looking keenly at her. "It is clear that Mrs.
+Toller knows more about this matter than anyone else."
+
+"Yes, sir, I do, and I am ready enough to tell what I know."
+
+"Then, pray, sit down, and let us hear it for there are several
+points on which I must confess that I am still in the dark."
+
+"I will soon make it clear to you," said she; "and I'd have done
+so before now if I could ha' got out from the cellar. If there's
+police-court business over this, you'll remember that I was the
+one that stood your friend, and that I was Miss Alice's friend
+too.
+
+"She was never happy at home, Miss Alice wasn't, from the time
+that her father married again. She was slighted like and had no
+say in anything, but it never really became bad for her until
+after she met Mr. Fowler at a friend's house. As well as I could
+learn, Miss Alice had rights of her own by will, but she was so
+quiet and patient, she was, that she never said a word about them
+but just left everything in Mr. Rucastle's hands. He knew he was
+safe with her; but when there was a chance of a husband coming
+forward, who would ask for all that the law would give him, then
+her father thought it time to put a stop on it. He wanted her to
+sign a paper, so that whether she married or not, he could use
+her money. When she wouldn't do it, he kept on worrying her until
+she got brain-fever, and for six weeks was at death's door. Then
+she got better at last, all worn to a shadow, and with her
+beautiful hair cut off; but that didn't make no change in her
+young man, and he stuck to her as true as man could be."
+
+"Ah," said Holmes, "I think that what you have been good enough
+to tell us makes the matter fairly clear, and that I can deduce
+all that remains. Mr. Rucastle then, I presume, took to this
+system of imprisonment?"
+
+"Yes, sir."
+
+"And brought Miss Hunter down from London in order to get rid of
+the disagreeable persistence of Mr. Fowler."
+
+"That was it, sir."
+
+"But Mr. Fowler being a persevering man, as a good seaman should
+be, blockaded the house, and having met you succeeded by certain
+arguments, metallic or otherwise, in convincing you that your
+interests were the same as his."
+
+"Mr. Fowler was a very kind-spoken, free-handed gentleman," said
+Mrs. Toller serenely.
+
+"And in this way he managed that your good man should have no
+want of drink, and that a ladder should be ready at the moment
+when your master had gone out."
+
+"You have it, sir, just as it happened."
+
+"I am sure we owe you an apology, Mrs. Toller," said Holmes, "for
+you have certainly cleared up everything which puzzled us. And
+here comes the country surgeon and Mrs. Rucastle, so I think,
+Watson, that we had best escort Miss Hunter back to Winchester,
+as it seems to me that our locus standi now is rather a
+questionable one."
+
+And thus was solved the mystery of the sinister house with the
+copper beeches in front of the door. Mr. Rucastle survived, but
+was always a broken man, kept alive solely through the care of
+his devoted wife. They still live with their old servants, who
+probably know so much of Rucastle's past life that he finds it
+difficult to part from them. Mr. Fowler and Miss Rucastle were
+married, by special license, in Southampton the day after their
+flight, and he is now the holder of a government appointment in
+the island of Mauritius. As to Miss Violet Hunter, my friend
+Holmes, rather to my disappointment, manifested no further
+interest in her when once she had ceased to be the centre of one
+of his problems, and she is now the head of a private school at
+Walsall, where I believe that she has met with considerable success.
+
+
+
+
+
+
+
+
+
+End of the Project Gutenberg EBook of The Adventures of Sherlock Holmes, by 
+Arthur Conan Doyle
+
+*** END OF THIS PROJECT GUTENBERG EBOOK THE ADVENTURES OF SHERLOCK HOLMES ***
+
+***** This file should be named 1661-8.txt or 1661-8.zip *****
+This and all associated files of various formats will be found in:
+        http://www.gutenberg.org/1/6/6/1661/
+
+Produced by an anonymous Project Gutenberg volunteer and Jose Menendez
+
+Updated editions will replace the previous one--the old editions
+will be renamed.
+
+Creating the works from public domain print editions means that no
+one owns a United States copyright in these works, so the Foundation
+(and you!) can copy and distribute it in the United States without
+permission and without paying copyright royalties.  Special rules,
+set forth in the General Terms of Use part of this license, apply to
+copying and distributing Project Gutenberg-tm electronic works to
+protect the PROJECT GUTENBERG-tm concept and trademark.  Project
+Gutenberg is a registered trademark, and may not be used if you
+charge for the eBooks, unless you receive specific permission.  If you
+do not charge anything for copies of this eBook, complying with the
+rules is very easy.  You may use this eBook for nearly any purpose
+such as creation of derivative works, reports, performances and
+research.  They may be modified and printed and given away--you may do
+practically ANYTHING with public domain eBooks.  Redistribution is
+subject to the trademark license, especially commercial
+redistribution.
+
+
+
+*** START: FULL LICENSE ***
+
+THE FULL PROJECT GUTENBERG LICENSE
+PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
+
+To protect the Project Gutenberg-tm mission of promoting the free
+distribution of electronic works, by using or distributing this work
+(or any other work associated in any way with the phrase "Project
+Gutenberg"), you agree to comply with all the terms of the Full Project
+Gutenberg-tm License (available with this file or online at
+http://gutenberg.net/license).
+
+
+Section 1.  General Terms of Use and Redistributing Project Gutenberg-tm
+electronic works
+
+1.A.  By reading or using any part of this Project Gutenberg-tm
+electronic work, you indicate that you have read, understand, agree to
+and accept all the terms of this license and intellectual property
+(trademark/copyright) agreement.  If you do not agree to abide by all
+the terms of this agreement, you must cease using and return or destroy
+all copies of Project Gutenberg-tm electronic works in your possession.
+If you paid a fee for obtaining a copy of or access to a Project
+Gutenberg-tm electronic work and you do not agree to be bound by the
+terms of this agreement, you may obtain a refund from the person or
+entity to whom you paid the fee as set forth in paragraph 1.E.8.
+
+1.B.  "Project Gutenberg" is a registered trademark.  It may only be
+used on or associated in any way with an electronic work by people who
+agree to be bound by the terms of this agreement.  There are a few
+things that you can do with most Project Gutenberg-tm electronic works
+even without complying with the full terms of this agreement.  See
+paragraph 1.C below.  There are a lot of things you can do with Project
+Gutenberg-tm electronic works if you follow the terms of this agreement
+and help preserve free future access to Project Gutenberg-tm electronic
+works.  See paragraph 1.E below.
+
+1.C.  The Project Gutenberg Literary Archive Foundation ("the Foundation"
+or PGLAF), owns a compilation copyright in the collection of Project
+Gutenberg-tm electronic works.  Nearly all the individual works in the
+collection are in the public domain in the United States.  If an
+individual work is in the public domain in the United States and you are
+located in the United States, we do not claim a right to prevent you from
+copying, distributing, performing, displaying or creating derivative
+works based on the work as long as all references to Project Gutenberg
+are removed.  Of course, we hope that you will support the Project
+Gutenberg-tm mission of promoting free access to electronic works by
+freely sharing Project Gutenberg-tm works in compliance with the terms of
+this agreement for keeping the Project Gutenberg-tm name associated with
+the work.  You can easily comply with the terms of this agreement by
+keeping this work in the same format with its attached full Project
+Gutenberg-tm License when you share it without charge with others.
+
+1.D.  The copyright laws of the place where you are located also govern
+what you can do with this work.  Copyright laws in most countries are in
+a constant state of change.  If you are outside the United States, check
+the laws of your country in addition to the terms of this agreement
+before downloading, copying, displaying, performing, distributing or
+creating derivative works based on this work or any other Project
+Gutenberg-tm work.  The Foundation makes no representations concerning
+the copyright status of any work in any country outside the United
+States.
+
+1.E.  Unless you have removed all references to Project Gutenberg:
+
+1.E.1.  The following sentence, with active links to, or other immediate
+access to, the full Project Gutenberg-tm License must appear prominently
+whenever any copy of a Project Gutenberg-tm work (any work on which the
+phrase "Project Gutenberg" appears, or with which the phrase "Project
+Gutenberg" is associated) is accessed, displayed, performed, viewed,
+copied or distributed:
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever.  You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.net
+
+1.E.2.  If an individual Project Gutenberg-tm electronic work is derived
+from the public domain (does not contain a notice indicating that it is
+posted with permission of the copyright holder), the work can be copied
+and distributed to anyone in the United States without paying any fees
+or charges.  If you are redistributing or providing access to a work
+with the phrase "Project Gutenberg" associated with or appearing on the
+work, you must comply either with the requirements of paragraphs 1.E.1
+through 1.E.7 or obtain permission for the use of the work and the
+Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
+1.E.9.
+
+1.E.3.  If an individual Project Gutenberg-tm electronic work is posted
+with the permission of the copyright holder, your use and distribution
+must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
+terms imposed by the copyright holder.  Additional terms will be linked
+to the Project Gutenberg-tm License for all works posted with the
+permission of the copyright holder found at the beginning of this work.
+
+1.E.4.  Do not unlink or detach or remove the full Project Gutenberg-tm
+License terms from this work, or any files containing a part of this
+work or any other work associated with Project Gutenberg-tm.
+
+1.E.5.  Do not copy, display, perform, distribute or redistribute this
+electronic work, or any part of this electronic work, without
+prominently displaying the sentence set forth in paragraph 1.E.1 with
+active links or immediate access to the full terms of the Project
+Gutenberg-tm License.
+
+1.E.6.  You may convert to and distribute this work in any binary,
+compressed, marked up, nonproprietary or proprietary form, including any
+word processing or hypertext form.  However, if you provide access to or
+distribute copies of a Project Gutenberg-tm work in a format other than
+"Plain Vanilla ASCII" or other format used in the official version
+posted on the official Project Gutenberg-tm web site (www.gutenberg.net),
+you must, at no additional cost, fee or expense to the user, provide a
+copy, a means of exporting a copy, or a means of obtaining a copy upon
+request, of the work in its original "Plain Vanilla ASCII" or other
+form.  Any alternate format must include the full Project Gutenberg-tm
+License as specified in paragraph 1.E.1.
+
+1.E.7.  Do not charge a fee for access to, viewing, displaying,
+performing, copying or distributing any Project Gutenberg-tm works
+unless you comply with paragraph 1.E.8 or 1.E.9.
+
+1.E.8.  You may charge a reasonable fee for copies of or providing
+access to or distributing Project Gutenberg-tm electronic works provided
+that
+
+- You pay a royalty fee of 20% of the gross profits you derive from
+     the use of Project Gutenberg-tm works calculated using the method
+     you already use to calculate your applicable taxes.  The fee is
+     owed to the owner of the Project Gutenberg-tm trademark, but he
+     has agreed to donate royalties under this paragraph to the
+     Project Gutenberg Literary Archive Foundation.  Royalty payments
+     must be paid within 60 days following each date on which you
+     prepare (or are legally required to prepare) your periodic tax
+     returns.  Royalty payments should be clearly marked as such and
+     sent to the Project Gutenberg Literary Archive Foundation at the
+     address specified in Section 4, "Information about donations to
+     the Project Gutenberg Literary Archive Foundation."
+
+- You provide a full refund of any money paid by a user who notifies
+     you in writing (or by e-mail) within 30 days of receipt that s/he
+     does not agree to the terms of the full Project Gutenberg-tm
+     License.  You must require such a user to return or
+     destroy all copies of the works possessed in a physical medium
+     and discontinue all use of and all access to other copies of
+     Project Gutenberg-tm works.
+
+- You provide, in accordance with paragraph 1.F.3, a full refund of any
+     money paid for a work or a replacement copy, if a defect in the
+     electronic work is discovered and reported to you within 90 days
+     of receipt of the work.
+
+- You comply with all other terms of this agreement for free
+     distribution of Project Gutenberg-tm works.
+
+1.E.9.  If you wish to charge a fee or distribute a Project Gutenberg-tm
+electronic work or group of works on different terms than are set
+forth in this agreement, you must obtain permission in writing from
+both the Project Gutenberg Literary Archive Foundation and Michael
+Hart, the owner of the Project Gutenberg-tm trademark.  Contact the
+Foundation as set forth in Section 3 below.
+
+1.F.
+
+1.F.1.  Project Gutenberg volunteers and employees expend considerable
+effort to identify, do copyright research on, transcribe and proofread
+public domain works in creating the Project Gutenberg-tm
+collection.  Despite these efforts, Project Gutenberg-tm electronic
+works, and the medium on which they may be stored, may contain
+"Defects," such as, but not limited to, incomplete, inaccurate or
+corrupt data, transcription errors, a copyright or other intellectual
+property infringement, a defective or damaged disk or other medium, a
+computer virus, or computer codes that damage or cannot be read by
+your equipment.
+
+1.F.2.  LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
+of Replacement or Refund" described in paragraph 1.F.3, the Project
+Gutenberg Literary Archive Foundation, the owner of the Project
+Gutenberg-tm trademark, and any other party distributing a Project
+Gutenberg-tm electronic work under this agreement, disclaim all
+liability to you for damages, costs and expenses, including legal
+fees.  YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
+LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
+PROVIDED IN PARAGRAPH 1.F.3.  YOU AGREE THAT THE FOUNDATION, THE
+TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
+LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
+INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+1.F.3.  LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
+defect in this electronic work within 90 days of receiving it, you can
+receive a refund of the money (if any) you paid for it by sending a
+written explanation to the person you received the work from.  If you
+received the work on a physical medium, you must return the medium with
+your written explanation.  The person or entity that provided you with
+the defective work may elect to provide a replacement copy in lieu of a
+refund.  If you received the work electronically, the person or entity
+providing it to you may choose to give you a second opportunity to
+receive the work electronically in lieu of a refund.  If the second copy
+is also defective, you may demand a refund in writing without further
+opportunities to fix the problem.
+
+1.F.4.  Except for the limited right of replacement or refund set forth
+in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
+WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
+
+1.F.5.  Some states do not allow disclaimers of certain implied
+warranties or the exclusion or limitation of certain types of damages.
+If any disclaimer or limitation set forth in this agreement violates the
+law of the state applicable to this agreement, the agreement shall be
+interpreted to make the maximum disclaimer or limitation permitted by
+the applicable state law.  The invalidity or unenforceability of any
+provision of this agreement shall not void the remaining provisions.
+
+1.F.6.  INDEMNITY - You agree to indemnify and hold the Foundation, the
+trademark owner, any agent or employee of the Foundation, anyone
+providing copies of Project Gutenberg-tm electronic works in accordance
+with this agreement, and any volunteers associated with the production,
+promotion and distribution of Project Gutenberg-tm electronic works,
+harmless from all liability, costs and expenses, including legal fees,
+that arise directly or indirectly from any of the following which you do
+or cause to occur: (a) distribution of this or any Project Gutenberg-tm
+work, (b) alteration, modification, or additions or deletions to any
+Project Gutenberg-tm work, and (c) any Defect you cause.
+
+
+Section  2.  Information about the Mission of Project Gutenberg-tm
+
+Project Gutenberg-tm is synonymous with the free distribution of
+electronic works in formats readable by the widest variety of computers
+including obsolete, old, middle-aged and new computers.  It exists
+because of the efforts of hundreds of volunteers and donations from
+people in all walks of life.
+
+Volunteers and financial support to provide volunteers with the
+assistance they need are critical to reaching Project Gutenberg-tm's
+goals and ensuring that the Project Gutenberg-tm collection will
+remain freely available for generations to come.  In 2001, the Project
+Gutenberg Literary Archive Foundation was created to provide a secure
+and permanent future for Project Gutenberg-tm and future generations.
+To learn more about the Project Gutenberg Literary Archive Foundation
+and how your efforts and donations can help, see Sections 3 and 4
+and the Foundation web page at http://www.pglaf.org.
+
+
+Section 3.  Information about the Project Gutenberg Literary Archive
+Foundation
+
+The Project Gutenberg Literary Archive Foundation is a non profit
+501(c)(3) educational corporation organized under the laws of the
+state of Mississippi and granted tax exempt status by the Internal
+Revenue Service.  The Foundation's EIN or federal tax identification
+number is 64-6221541.  Its 501(c)(3) letter is posted at
+http://pglaf.org/fundraising.  Contributions to the Project Gutenberg
+Literary Archive Foundation are tax deductible to the full extent
+permitted by U.S. federal laws and your state's laws.
+
+The Foundation's principal office is located at 4557 Melan Dr. S.
+Fairbanks, AK, 99712., but its volunteers and employees are scattered
+throughout numerous locations.  Its business office is located at
+809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
+business@pglaf.org.  Email contact links and up to date contact
+information can be found at the Foundation's web site and official
+page at http://pglaf.org
+
+For additional contact information:
+     Dr. Gregory B. Newby
+     Chief Executive and Director
+     gbnewby@pglaf.org
+
+
+Section 4.  Information about Donations to the Project Gutenberg
+Literary Archive Foundation
+
+Project Gutenberg-tm depends upon and cannot survive without wide
+spread public support and donations to carry out its mission of
+increasing the number of public domain and licensed works that can be
+freely distributed in machine readable form accessible by the widest
+array of equipment including outdated equipment.  Many small donations
+($1 to $5,000) are particularly important to maintaining tax exempt
+status with the IRS.
+
+The Foundation is committed to complying with the laws regulating
+charities and charitable donations in all 50 states of the United
+States.  Compliance requirements are not uniform and it takes a
+considerable effort, much paperwork and many fees to meet and keep up
+with these requirements.  We do not solicit donations in locations
+where we have not received written confirmation of compliance.  To
+SEND DONATIONS or determine the status of compliance for any
+particular state visit http://pglaf.org
+
+While we cannot and do not solicit contributions from states where we
+have not met the solicitation requirements, we know of no prohibition
+against accepting unsolicited donations from donors in such states who
+approach us with offers to donate.
+
+International donations are gratefully accepted, but we cannot make
+any statements concerning tax treatment of donations received from
+outside the United States.  U.S. laws alone swamp our small staff.
+
+Please check the Project Gutenberg Web pages for current donation
+methods and addresses.  Donations are accepted in a number of other
+ways including including checks, online payments and credit card
+donations.  To donate, please visit: http://pglaf.org/donate
+
+
+Section 5.  General Information About Project Gutenberg-tm electronic
+works.
+
+Professor Michael S. Hart is the originator of the Project Gutenberg-tm
+concept of a library of electronic works that could be freely shared
+with anyone.  For thirty years, he produced and distributed Project
+Gutenberg-tm eBooks with only a loose network of volunteer support.
+
+
+Project Gutenberg-tm eBooks are often created from several printed
+editions, all of which are confirmed as Public Domain in the U.S.
+unless a copyright notice is included.  Thus, we do not necessarily
+keep eBooks in compliance with any particular paper edition.
+
+
+Most people start at our Web site which has the main PG search facility:
+
+     http://www.gutenberg.net
+
+This Web site includes information about Project Gutenberg-tm,
+including how to make donations to the Project Gutenberg Literary
+Archive Foundation, how to help produce our new eBooks, and how to
+subscribe to our email newsletter to hear about new eBooks.
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file2.txt b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file2.txt
new file mode 100644
index 0000000..a25d303
--- /dev/null
+++ b/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.
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatapp/job/wordcount/wordcount.job b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/job/wordcount/wordcount.job
new file mode 100644
index 0000000..1a008c2
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/job/wordcount/wordcount.job
@@ -0,0 +1,12 @@
+mapred.input.dir=data/file1.txt
+mapred.output.dir=output
+mapred.job.name=wordcount(static)
+mapred.mapper.class=edu.uci.ics.hyracks.examples.wordcount.WordCount$Map
+mapred.combiner.class=edu.uci.ics.hyracks.examples.wordcount.WordCount$Reduce
+mapred.reducer.class=edu.uci.ics.hyracks.examples.wordcount.WordCount$Reduce
+mapred.input.format.class=org.apache.hadoop.mapred.TextInputFormat
+mapred.output.format.class=org.apache.hadoop.mapred.TextOutputFormat
+mapred.mapoutput.key.class=org.apache.hadoop.io.Text
+mapred.mapoutput.value.class=org.apache.hadoop.io.IntWritable
+mapred.output.key.class=org.apache.hadoop.io.Text
+mapred.output.value.class=org.apache.hadoop.io.IntWritable
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatapp/pom.xml b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/pom.xml
new file mode 100644
index 0000000..9e21cff
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/pom.xml
@@ -0,0 +1,161 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>edu.uci.ics.hyracks.examples.compat</groupId>
+  <artifactId>hadoopcompatapp</artifactId>
+  <version>0.1.6-SNAPSHOT</version>
+
+  <parent>
+    <groupId>edu.uci.ics.hyracks.examples</groupId>
+    <artifactId>hadoop-compat-example</artifactId>
+    <version>0.1.6-SNAPSHOT</version>
+  </parent>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>copy-dependencies</id>
+            <phase>package</phase>
+            <goals>
+              <goal>copy-dependencies</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>target/application/lib</outputDirectory>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <version>2.2-beta-5</version>
+        <executions>
+          <execution>
+            <configuration>
+              <descriptors>
+                <descriptor>src/main/assembly/app-assembly.xml</descriptor>
+              </descriptors>
+            </configuration>
+            <phase>package</phase>
+            <goals>
+              <goal>attached</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+      	<groupId>edu.uci.ics.hyracks</groupId>
+      	<artifactId>hyracks-maven-plugin</artifactId>
+      	<version>0.0.1</version>
+        <configuration>
+          <hyracksServerHome>${basedir}/../../../hyracks-server/target/hyracks-server-${project.version}-binary-assembly</hyracksServerHome>
+          <hyracksCLIHome>${basedir}/../../../hyracks-cli/target/hyracks-cli-${project.version}-binary-assembly</hyracksCLIHome>
+        </configuration>
+        <executions>
+          <execution>
+            <id>hyracks-cc-start</id>
+            <phase>pre-integration-test</phase>
+            <goals>
+              <goal>start-cc</goal>
+            </goals>
+            <configuration>
+	      <workingDir>${project.build.directory}</workingDir>
+            </configuration>
+          </execution>
+          <execution>
+            <id>hyracks-nc1-start</id>
+            <phase>pre-integration-test</phase>
+            <goals>
+              <goal>start-nc</goal>
+            </goals>
+            <configuration>
+              <nodeId>NC1</nodeId>
+              <dataIpAddress>127.0.0.1</dataIpAddress>
+              <ccHost>localhost</ccHost>
+	      <workingDir>${project.build.directory}</workingDir>
+            </configuration>
+          </execution>
+          <execution>
+            <id>hyracks-nc2-start</id>
+            <phase>pre-integration-test</phase>
+            <goals>
+              <goal>start-nc</goal>
+            </goals>
+            <configuration>
+              <nodeId>NC2</nodeId>
+              <dataIpAddress>127.0.0.1</dataIpAddress>
+              <ccHost>localhost</ccHost>
+	      <workingDir>${project.build.directory}</workingDir>
+            </configuration>
+          </execution>
+          <execution>
+            <id>deploy-app</id>
+            <phase>pre-integration-test</phase>
+            <goals>
+              <goal>deploy-app</goal>
+            </goals>
+            <configuration>
+              <ccHost>localhost</ccHost>
+              <appName>compat</appName>
+              <harFile>${project.build.directory}/hadoopcompatapp-${project.version}-app-assembly.zip</harFile>
+            </configuration>
+          </execution>
+	     <execution>
+	       <id>stop-services</id>
+	       <phase>post-integration-test</phase>
+	       <goals>
+	         <goal>stop-services</goal>
+	       </goals>
+             </execution>
+          </executions>
+      </plugin>
+      <plugin>
+      	<groupId>org.apache.maven.plugins</groupId>
+      	<artifactId>maven-compiler-plugin</artifactId>
+      	<version>2.0.2</version>
+        <configuration>
+          <source>1.6</source>
+          <target>1.6</target>
+        </configuration>
+      </plugin>
+      <plugin>
+      	<groupId>org.apache.maven.plugins</groupId>
+      	<artifactId>maven-failsafe-plugin</artifactId>
+      	<version>2.8.1</version>
+      	<executions>
+      	  <execution>
+      	    <id>it</id>
+      	    <phase>integration-test</phase>
+      	    <goals>
+      	      <goal>integration-test</goal>
+      	    </goals>
+      	  </execution>
+      	</executions>
+      </plugin>
+    </plugins>
+  </build>
+  <dependencies>
+     <dependency>
+        <groupId>edu.uci.ics.hyracks.examples.compat</groupId>
+        <artifactId>hadoopcompathelper</artifactId>
+        <version>0.1.6-SNAPSHOT</version>
+        <scope>compile</scope>
+     </dependency>
+     <dependency>
+        <groupId>edu.uci.ics.hyracks.examples.compat</groupId>
+  	    <artifactId>hadoopcompatclient</artifactId>
+  	    <version>0.1.6-SNAPSHOT</version>
+  	    <type>jar</type>
+  	    <scope>test</scope>
+     </dependency>
+     <dependency>
+  	    <groupId>junit</groupId>
+  	    <artifactId>junit</artifactId>
+  	    <version>4.8.2</version>
+  	    <type>jar</type>
+  	    <scope>test</scope>
+     </dependency>
+  </dependencies>
+</project>
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/main/assembly/app-assembly.xml b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/main/assembly/app-assembly.xml
new file mode 100644
index 0000000..43ace6c
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/main/assembly/app-assembly.xml
@@ -0,0 +1,13 @@
+<assembly>
+  <id>app-assembly</id>
+  <formats>
+    <format>zip</format>
+  </formats>
+  <includeBaseDirectory>false</includeBaseDirectory>
+  <fileSets>
+    <fileSet>
+      <directory>target/application/lib</directory>
+      <outputDirectory>lib</outputDirectory>
+    </fileSet>
+  </fileSets>
+</assembly>
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/.classpath b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/.classpath
new file mode 100644
index 0000000..ed53773
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="compat-client"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/.project b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/.project
new file mode 100644
index 0000000..7054f52
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>compat-app</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/edu/uci/ics/hyracks/examples/compat/test/WordCountCompatibilityIT.java b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/edu/uci/ics/hyracks/examples/compat/test/WordCountCompatibilityIT.java
new file mode 100644
index 0000000..a2a8994
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/edu/uci/ics/hyracks/examples/compat/test/WordCountCompatibilityIT.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2009-2010 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package edu.uci.ics.hyracks.examples.compat.test;
+
+import java.io.File;
+
+import org.junit.Test;
+
+import edu.uci.ics.hyracks.examples.compat.client.WordCountCompatibility;
+
+public class WordCountCompatibilityIT {
+    @Test
+    public void runWordCount() throws Exception {
+        WordCountCompatibility.main(new String[] { "-cluster", getClusterConf(), "-jobFiles", getWordCountJobFile(),
+                "-applicationName", "compat" });
+    }
+
+    private String getClusterConf() {
+        return new File("conf/local_cluster.conf").getAbsolutePath();
+    }
+
+    private String getWordCountJobFile() {
+        return new File("job/wordcount/wordcount.job").getAbsolutePath();
+    }
+}
\ No newline at end of file
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatclient/.classpath b/hyracks-examples/hadoop-compat-example/hadoopcompatclient/.classpath
new file mode 100644
index 0000000..1f3c1ff
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatclient/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatclient/.project b/hyracks-examples/hadoop-compat-example/hadoopcompatclient/.project
new file mode 100644
index 0000000..04307d3
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatclient/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>textclient</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatclient/.settings/org.eclipse.jdt.core.prefs b/hyracks-examples/hadoop-compat-example/hadoopcompatclient/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8599738
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatclient/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,6 @@
+#Tue Sep 28 14:37:42 PDT 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatclient/.settings/org.maven.ide.eclipse.prefs b/hyracks-examples/hadoop-compat-example/hadoopcompatclient/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..4562b1a
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatclient/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Tue Sep 28 14:37:42 PDT 2010
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatclient/pom.xml b/hyracks-examples/hadoop-compat-example/hadoopcompatclient/pom.xml
new file mode 100644
index 0000000..b6f222c
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatclient/pom.xml
@@ -0,0 +1,80 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>edu.uci.ics.hyracks.examples.compat</groupId>
+  <artifactId>hadoopcompatclient</artifactId>
+  <version>0.1.6-SNAPSHOT</version>
+
+  <parent>
+    <groupId>edu.uci.ics.hyracks.examples</groupId>
+    <artifactId>hadoop-compat-example</artifactId>
+    <version>0.1.6-SNAPSHOT</version>
+  </parent>
+
+  <dependencies>
+  	<dependency>
+  		<groupId>edu.uci.ics.hyracks</groupId>
+  		<artifactId>hyracks-dataflow-std</artifactId>
+  		<version>0.1.6-SNAPSHOT</version>
+  		<scope>compile</scope>
+  	</dependency>
+  	<dependency>
+  		<groupId>edu.uci.ics.hyracks.examples.compat</groupId>
+  		<artifactId>hadoopcompathelper</artifactId>
+  		<version>0.1.6-SNAPSHOT</version>
+  		<type>jar</type>
+  		<scope>compile</scope>
+  	</dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>2.0.2</version>
+        <configuration>
+          <source>1.6</source>
+          <target>1.6</target>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>appassembler-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <configuration>
+              <programs>
+                <program>
+                  <mainClass>edu.uci.ics.hyracks.examples.compat.client.WordCountCompatibility</mainClass>
+                  <name>hadoopcompatclient</name>
+                </program>
+              </programs>
+              <repositoryLayout>flat</repositoryLayout>
+              <repositoryName>lib</repositoryName>
+            </configuration>
+            <phase>package</phase>
+            <goals>
+              <goal>assemble</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <version>2.2-beta-5</version>
+        <executions>
+          <execution>
+            <configuration>
+              <descriptors>
+                <descriptor>src/main/assembly/binary-assembly.xml</descriptor>
+              </descriptors>
+            </configuration>
+            <phase>package</phase>
+            <goals>
+              <goal>attached</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatclient/src/main/assembly/binary-assembly.xml b/hyracks-examples/hadoop-compat-example/hadoopcompatclient/src/main/assembly/binary-assembly.xml
new file mode 100644
index 0000000..0500499
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatclient/src/main/assembly/binary-assembly.xml
@@ -0,0 +1,19 @@
+<assembly>
+  <id>binary-assembly</id>
+  <formats>
+    <format>zip</format>
+    <format>dir</format>
+  </formats>
+  <includeBaseDirectory>false</includeBaseDirectory>
+  <fileSets>
+    <fileSet>
+      <directory>target/appassembler/bin</directory>
+      <outputDirectory>bin</outputDirectory>
+      <fileMode>0755</fileMode>
+    </fileSet>
+    <fileSet>
+      <directory>target/appassembler/lib</directory>
+      <outputDirectory>lib</outputDirectory>
+    </fileSet>
+  </fileSets>
+</assembly>
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompatclient/src/main/java/edu/uci/ics/hyracks/examples/compat/client/WordCountCompatibility.java b/hyracks-examples/hadoop-compat-example/hadoopcompatclient/src/main/java/edu/uci/ics/hyracks/examples/compat/client/WordCountCompatibility.java
new file mode 100644
index 0000000..da33c14
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompatclient/src/main/java/edu/uci/ics/hyracks/examples/compat/client/WordCountCompatibility.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2009-2010 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package edu.uci.ics.hyracks.examples.compat.client;
+
+import edu.uci.ics.hyracks.hadoop.compat.driver.CompatibilityLayer;
+
+public class WordCountCompatibility {
+    public static void main(String[] args) throws Exception {
+        CompatibilityLayer.main(args);
+    }
+}
\ No newline at end of file
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompathelper/.classpath b/hyracks-examples/hadoop-compat-example/hadoopcompathelper/.classpath
new file mode 100644
index 0000000..1f3c1ff
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompathelper/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompathelper/.project b/hyracks-examples/hadoop-compat-example/hadoopcompathelper/.project
new file mode 100644
index 0000000..19ce234
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompathelper/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>texthelper</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompathelper/.settings/org.eclipse.jdt.core.prefs b/hyracks-examples/hadoop-compat-example/hadoopcompathelper/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8599738
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompathelper/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,6 @@
+#Tue Sep 28 14:37:42 PDT 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompathelper/.settings/org.maven.ide.eclipse.prefs b/hyracks-examples/hadoop-compat-example/hadoopcompathelper/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..4562b1a
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompathelper/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Tue Sep 28 14:37:42 PDT 2010
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompathelper/pom.xml b/hyracks-examples/hadoop-compat-example/hadoopcompathelper/pom.xml
new file mode 100644
index 0000000..49090ce
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompathelper/pom.xml
@@ -0,0 +1,40 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>edu.uci.ics.hyracks.examples.compat</groupId>
+  <artifactId>hadoopcompathelper</artifactId>
+  <version>0.1.6-SNAPSHOT</version>
+
+  <parent>
+    <groupId>edu.uci.ics.hyracks.examples</groupId>
+    <artifactId>hadoop-compat-example</artifactId>
+    <version>0.1.6-SNAPSHOT</version>
+  </parent>
+
+  <dependencies>
+  	<dependency>
+  		<groupId>edu.uci.ics.hyracks</groupId>
+  		<artifactId>hyracks-dataflow-std</artifactId>
+  		<version>0.1.6-SNAPSHOT</version>
+  		<scope>compile</scope>
+  	</dependency>
+  	<dependency>
+  		<groupId>edu.uci.ics.hyracks</groupId>
+  		<artifactId>hyracks-api</artifactId>
+  		<version>0.1.6-SNAPSHOT</version>
+  		<scope>compile</scope>
+  	</dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>2.0.2</version>
+        <configuration>
+          <source>1.6</source>
+          <target>1.6</target>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/hyracks-examples/hadoop-compat-example/hadoopcompathelper/src/main/java/edu/uci/ics/hyracks/examples/wordcount/WordCount.java b/hyracks-examples/hadoop-compat-example/hadoopcompathelper/src/main/java/edu/uci/ics/hyracks/examples/wordcount/WordCount.java
new file mode 100644
index 0000000..2a6ac3a
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/hadoopcompathelper/src/main/java/edu/uci/ics/hyracks/examples/wordcount/WordCount.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2009-2010 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package edu.uci.ics.hyracks.examples.wordcount;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Iterator;
+import java.util.StringTokenizer;
+
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.Text;
+import org.apache.hadoop.mapred.MapReduceBase;
+import org.apache.hadoop.mapred.Mapper;
+import org.apache.hadoop.mapred.OutputCollector;
+import org.apache.hadoop.mapred.Reducer;
+import org.apache.hadoop.mapred.Reporter;
+
+public class WordCount implements Serializable {
+    public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable>,
+            Serializable {
+
+        private final static IntWritable ONE = new IntWritable(1);
+        private Text word = new Text();
+
+        public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter)
+                throws IOException {
+            String line = value.toString();
+            StringTokenizer tokenizer = new StringTokenizer(line);
+            while (tokenizer.hasMoreTokens()) {
+                String token = tokenizer.nextToken();
+                word.set(token);
+                output.collect(word, ONE);
+            }
+        }
+    }
+
+    public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable>,
+            Serializable {
+
+        public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output,
+                Reporter reporter) throws IOException {
+            int sum = 0;
+            while (values.hasNext()) {
+                sum += values.next().get();
+            }
+            output.collect(key, new IntWritable(sum));
+        }
+    }
+}
\ No newline at end of file
diff --git a/hyracks-examples/hadoop-compat-example/pom.xml b/hyracks-examples/hadoop-compat-example/pom.xml
new file mode 100644
index 0000000..b2a08ee
--- /dev/null
+++ b/hyracks-examples/hadoop-compat-example/pom.xml
@@ -0,0 +1,37 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>edu.uci.ics.hyracks.examples</groupId>
+  <artifactId>hadoop-compat-example</artifactId>
+  <version>0.1.6-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+  <parent>
+    <groupId>edu.uci.ics.hyracks</groupId>
+    <artifactId>hyracks-examples</artifactId>
+    <version>0.1.6-SNAPSHOT</version>
+  </parent>
+
+  <modules>
+    <module>hadoopcompathelper</module>
+    <module>hadoopcompatclient</module>
+    <module>hadoopcompatapp</module>
+  </modules>
+
+  <dependencies>
+      <dependency>
+         <groupId>org.apache.hadoop</groupId>
+         <artifactId>hadoop-core</artifactId>
+         <version>0.20.2</version>
+         <type>jar</type>
+         <scope>compile</scope>
+      </dependency>
+
+      <dependency>
+         <groupId>edu.uci.ics.hyracks</groupId>
+         <artifactId>hyracks-hadoop-compat</artifactId>
+         <version>0.1.6-SNAPSHOT</version>
+         <type>jar</type>
+         <scope>compile</scope>
+      </dependency>
+  </dependencies>
+</project>
diff --git a/hyracks-examples/pom.xml b/hyracks-examples/pom.xml
index 4d42049..5281140 100644
--- a/hyracks-examples/pom.xml
+++ b/hyracks-examples/pom.xml
@@ -16,5 +16,6 @@
     <module>text-example</module>
     <module>btree-example</module>
     <module>hyracks-integration-tests</module>
+    <module>hadoop-compat-example</module>
   </modules>
 </project>
diff --git a/hyracks-examples/text-example/textapp/.classpath b/hyracks-examples/text-example/textapp/.classpath
index 3f62785..f2cc5f7 100644
--- a/hyracks-examples/text-example/textapp/.classpath
+++ b/hyracks-examples/text-example/textapp/.classpath
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
 	<classpathentry kind="output" path="target/classes"/>
 </classpath>
diff --git a/hyracks-examples/text-example/textapp/.settings/org.eclipse.jdt.core.prefs b/hyracks-examples/text-example/textapp/.settings/org.eclipse.jdt.core.prefs
index 37272d9..692202d 100644
--- a/hyracks-examples/text-example/textapp/.settings/org.eclipse.jdt.core.prefs
+++ b/hyracks-examples/text-example/textapp/.settings/org.eclipse.jdt.core.prefs
@@ -1,6 +1,13 @@
-#Tue Sep 28 14:37:42 PDT 2010
+#Thu May 19 22:55:12 PDT 2011
 eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4
-org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.source=1.4
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/hyracks-examples/text-example/textapp/data/file1.txt b/hyracks-examples/text-example/textapp/data/file1.txt
new file mode 100644
index 0000000..c4c3130
--- /dev/null
+++ b/hyracks-examples/text-example/textapp/data/file1.txt
@@ -0,0 +1,13052 @@
+﻿Project Gutenberg's The Adventures of Sherlock Holmes, by Arthur Conan Doyle
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever.  You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.net
+
+
+Title: The Adventures of Sherlock Holmes
+
+Author: Arthur Conan Doyle
+
+Posting Date: April 18, 2011 [EBook #1661]
+First Posted: November 29, 2002
+
+Language: English
+
+
+*** START OF THIS PROJECT GUTENBERG EBOOK THE ADVENTURES OF SHERLOCK HOLMES ***
+
+
+
+
+Produced by an anonymous Project Gutenberg volunteer and Jose Menendez
+
+
+
+
+
+
+
+
+
+THE ADVENTURES OF SHERLOCK HOLMES
+
+by
+
+SIR ARTHUR CONAN DOYLE
+
+
+
+   I. A Scandal in Bohemia
+  II. The Red-headed League
+ III. A Case of Identity
+  IV. The Boscombe Valley Mystery
+   V. The Five Orange Pips
+  VI. The Man with the Twisted Lip
+ VII. The Adventure of the Blue Carbuncle
+VIII. The Adventure of the Speckled Band
+  IX. The Adventure of the Engineer's Thumb
+   X. The Adventure of the Noble Bachelor
+  XI. The Adventure of the Beryl Coronet
+ XII. The Adventure of the Copper Beeches
+
+
+
+
+ADVENTURE I. A SCANDAL IN BOHEMIA
+
+I.
+
+To Sherlock Holmes she is always THE woman. I have seldom heard
+him mention her under any other name. In his eyes she eclipses
+and predominates the whole of her sex. It was not that he felt
+any emotion akin to love for Irene Adler. All emotions, and that
+one particularly, were abhorrent to his cold, precise but
+admirably balanced mind. He was, I take it, the most perfect
+reasoning and observing machine that the world has seen, but as a
+lover he would have placed himself in a false position. He never
+spoke of the softer passions, save with a gibe and a sneer. They
+were admirable things for the observer--excellent for drawing the
+veil from men's motives and actions. But for the trained reasoner
+to admit such intrusions into his own delicate and finely
+adjusted temperament was to introduce a distracting factor which
+might throw a doubt upon all his mental results. Grit in a
+sensitive instrument, or a crack in one of his own high-power
+lenses, would not be more disturbing than a strong emotion in a
+nature such as his. And yet there was but one woman to him, and
+that woman was the late Irene Adler, of dubious and questionable
+memory.
+
+I had seen little of Holmes lately. My marriage had drifted us
+away from each other. My own complete happiness, and the
+home-centred interests which rise up around the man who first
+finds himself master of his own establishment, were sufficient to
+absorb all my attention, while Holmes, who loathed every form of
+society with his whole Bohemian soul, remained in our lodgings in
+Baker Street, buried among his old books, and alternating from
+week to week between cocaine and ambition, the drowsiness of the
+drug, and the fierce energy of his own keen nature. He was still,
+as ever, deeply attracted by the study of crime, and occupied his
+immense faculties and extraordinary powers of observation in
+following out those clues, and clearing up those mysteries which
+had been abandoned as hopeless by the official police. From time
+to time I heard some vague account of his doings: of his summons
+to Odessa in the case of the Trepoff murder, of his clearing up
+of the singular tragedy of the Atkinson brothers at Trincomalee,
+and finally of the mission which he had accomplished so
+delicately and successfully for the reigning family of Holland.
+Beyond these signs of his activity, however, which I merely
+shared with all the readers of the daily press, I knew little of
+my former friend and companion.
+
+One night--it was on the twentieth of March, 1888--I was
+returning from a journey to a patient (for I had now returned to
+civil practice), when my way led me through Baker Street. As I
+passed the well-remembered door, which must always be associated
+in my mind with my wooing, and with the dark incidents of the
+Study in Scarlet, I was seized with a keen desire to see Holmes
+again, and to know how he was employing his extraordinary powers.
+His rooms were brilliantly lit, and, even as I looked up, I saw
+his tall, spare figure pass twice in a dark silhouette against
+the blind. He was pacing the room swiftly, eagerly, with his head
+sunk upon his chest and his hands clasped behind him. To me, who
+knew his every mood and habit, his attitude and manner told their
+own story. He was at work again. He had risen out of his
+drug-created dreams and was hot upon the scent of some new
+problem. I rang the bell and was shown up to the chamber which
+had formerly been in part my own.
+
+His manner was not effusive. It seldom was; but he was glad, I
+think, to see me. With hardly a word spoken, but with a kindly
+eye, he waved me to an armchair, threw across his case of cigars,
+and indicated a spirit case and a gasogene in the corner. Then he
+stood before the fire and looked me over in his singular
+introspective fashion.
+
+"Wedlock suits you," he remarked. "I think, Watson, that you have
+put on seven and a half pounds since I saw you."
+
+"Seven!" I answered.
+
+"Indeed, I should have thought a little more. Just a trifle more,
+I fancy, Watson. And in practice again, I observe. You did not
+tell me that you intended to go into harness."
+
+"Then, how do you know?"
+
+"I see it, I deduce it. How do I know that you have been getting
+yourself very wet lately, and that you have a most clumsy and
+careless servant girl?"
+
+"My dear Holmes," said I, "this is too much. You would certainly
+have been burned, had you lived a few centuries ago. It is true
+that I had a country walk on Thursday and came home in a dreadful
+mess, but as I have changed my clothes I can't imagine how you
+deduce it. As to Mary Jane, she is incorrigible, and my wife has
+given her notice, but there, again, I fail to see how you work it
+out."
+
+He chuckled to himself and rubbed his long, nervous hands
+together.
+
+"It is simplicity itself," said he; "my eyes tell me that on the
+inside of your left shoe, just where the firelight strikes it,
+the leather is scored by six almost parallel cuts. Obviously they
+have been caused by someone who has very carelessly scraped round
+the edges of the sole in order to remove crusted mud from it.
+Hence, you see, my double deduction that you had been out in vile
+weather, and that you had a particularly malignant boot-slitting
+specimen of the London slavey. As to your practice, if a
+gentleman walks into my rooms smelling of iodoform, with a black
+mark of nitrate of silver upon his right forefinger, and a bulge
+on the right side of his top-hat to show where he has secreted
+his stethoscope, I must be dull, indeed, if I do not pronounce
+him to be an active member of the medical profession."
+
+I could not help laughing at the ease with which he explained his
+process of deduction. "When I hear you give your reasons," I
+remarked, "the thing always appears to me to be so ridiculously
+simple that I could easily do it myself, though at each
+successive instance of your reasoning I am baffled until you
+explain your process. And yet I believe that my eyes are as good
+as yours."
+
+"Quite so," he answered, lighting a cigarette, and throwing
+himself down into an armchair. "You see, but you do not observe.
+The distinction is clear. For example, you have frequently seen
+the steps which lead up from the hall to this room."
+
+"Frequently."
+
+"How often?"
+
+"Well, some hundreds of times."
+
+"Then how many are there?"
+
+"How many? I don't know."
+
+"Quite so! You have not observed. And yet you have seen. That is
+just my point. Now, I know that there are seventeen steps,
+because I have both seen and observed. By-the-way, since you are
+interested in these little problems, and since you are good
+enough to chronicle one or two of my trifling experiences, you
+may be interested in this." He threw over a sheet of thick,
+pink-tinted note-paper which had been lying open upon the table.
+"It came by the last post," said he. "Read it aloud."
+
+The note was undated, and without either signature or address.
+
+"There will call upon you to-night, at a quarter to eight
+o'clock," it said, "a gentleman who desires to consult you upon a
+matter of the very deepest moment. Your recent services to one of
+the royal houses of Europe have shown that you are one who may
+safely be trusted with matters which are of an importance which
+can hardly be exaggerated. This account of you we have from all
+quarters received. Be in your chamber then at that hour, and do
+not take it amiss if your visitor wear a mask."
+
+"This is indeed a mystery," I remarked. "What do you imagine that
+it means?"
+
+"I have no data yet. It is a capital mistake to theorize before
+one has data. Insensibly one begins to twist facts to suit
+theories, instead of theories to suit facts. But the note itself.
+What do you deduce from it?"
+
+I carefully examined the writing, and the paper upon which it was
+written.
+
+"The man who wrote it was presumably well to do," I remarked,
+endeavouring to imitate my companion's processes. "Such paper
+could not be bought under half a crown a packet. It is peculiarly
+strong and stiff."
+
+"Peculiar--that is the very word," said Holmes. "It is not an
+English paper at all. Hold it up to the light."
+
+I did so, and saw a large "E" with a small "g," a "P," and a
+large "G" with a small "t" woven into the texture of the paper.
+
+"What do you make of that?" asked Holmes.
+
+"The name of the maker, no doubt; or his monogram, rather."
+
+"Not at all. The 'G' with the small 't' stands for
+'Gesellschaft,' which is the German for 'Company.' It is a
+customary contraction like our 'Co.' 'P,' of course, stands for
+'Papier.' Now for the 'Eg.' Let us glance at our Continental
+Gazetteer." He took down a heavy brown volume from his shelves.
+"Eglow, Eglonitz--here we are, Egria. It is in a German-speaking
+country--in Bohemia, not far from Carlsbad. 'Remarkable as being
+the scene of the death of Wallenstein, and for its numerous
+glass-factories and paper-mills.' Ha, ha, my boy, what do you
+make of that?" His eyes sparkled, and he sent up a great blue
+triumphant cloud from his cigarette.
+
+"The paper was made in Bohemia," I said.
+
+"Precisely. And the man who wrote the note is a German. Do you
+note the peculiar construction of the sentence--'This account of
+you we have from all quarters received.' A Frenchman or Russian
+could not have written that. It is the German who is so
+uncourteous to his verbs. It only remains, therefore, to discover
+what is wanted by this German who writes upon Bohemian paper and
+prefers wearing a mask to showing his face. And here he comes, if
+I am not mistaken, to resolve all our doubts."
+
+As he spoke there was the sharp sound of horses' hoofs and
+grating wheels against the curb, followed by a sharp pull at the
+bell. Holmes whistled.
+
+"A pair, by the sound," said he. "Yes," he continued, glancing
+out of the window. "A nice little brougham and a pair of
+beauties. A hundred and fifty guineas apiece. There's money in
+this case, Watson, if there is nothing else."
+
+"I think that I had better go, Holmes."
+
+"Not a bit, Doctor. Stay where you are. I am lost without my
+Boswell. And this promises to be interesting. It would be a pity
+to miss it."
+
+"But your client--"
+
+"Never mind him. I may want your help, and so may he. Here he
+comes. Sit down in that armchair, Doctor, and give us your best
+attention."
+
+A slow and heavy step, which had been heard upon the stairs and
+in the passage, paused immediately outside the door. Then there
+was a loud and authoritative tap.
+
+"Come in!" said Holmes.
+
+A man entered who could hardly have been less than six feet six
+inches in height, with the chest and limbs of a Hercules. His
+dress was rich with a richness which would, in England, be looked
+upon as akin to bad taste. Heavy bands of astrakhan were slashed
+across the sleeves and fronts of his double-breasted coat, while
+the deep blue cloak which was thrown over his shoulders was lined
+with flame-coloured silk and secured at the neck with a brooch
+which consisted of a single flaming beryl. Boots which extended
+halfway up his calves, and which were trimmed at the tops with
+rich brown fur, completed the impression of barbaric opulence
+which was suggested by his whole appearance. He carried a
+broad-brimmed hat in his hand, while he wore across the upper
+part of his face, extending down past the cheekbones, a black
+vizard mask, which he had apparently adjusted that very moment,
+for his hand was still raised to it as he entered. From the lower
+part of the face he appeared to be a man of strong character,
+with a thick, hanging lip, and a long, straight chin suggestive
+of resolution pushed to the length of obstinacy.
+
+"You had my note?" he asked with a deep harsh voice and a
+strongly marked German accent. "I told you that I would call." He
+looked from one to the other of us, as if uncertain which to
+address.
+
+"Pray take a seat," said Holmes. "This is my friend and
+colleague, Dr. Watson, who is occasionally good enough to help me
+in my cases. Whom have I the honour to address?"
+
+"You may address me as the Count Von Kramm, a Bohemian nobleman.
+I understand that this gentleman, your friend, is a man of honour
+and discretion, whom I may trust with a matter of the most
+extreme importance. If not, I should much prefer to communicate
+with you alone."
+
+I rose to go, but Holmes caught me by the wrist and pushed me
+back into my chair. "It is both, or none," said he. "You may say
+before this gentleman anything which you may say to me."
+
+The Count shrugged his broad shoulders. "Then I must begin," said
+he, "by binding you both to absolute secrecy for two years; at
+the end of that time the matter will be of no importance. At
+present it is not too much to say that it is of such weight it
+may have an influence upon European history."
+
+"I promise," said Holmes.
+
+"And I."
+
+"You will excuse this mask," continued our strange visitor. "The
+august person who employs me wishes his agent to be unknown to
+you, and I may confess at once that the title by which I have
+just called myself is not exactly my own."
+
+"I was aware of it," said Holmes dryly.
+
+"The circumstances are of great delicacy, and every precaution
+has to be taken to quench what might grow to be an immense
+scandal and seriously compromise one of the reigning families of
+Europe. To speak plainly, the matter implicates the great House
+of Ormstein, hereditary kings of Bohemia."
+
+"I was also aware of that," murmured Holmes, settling himself
+down in his armchair and closing his eyes.
+
+Our visitor glanced with some apparent surprise at the languid,
+lounging figure of the man who had been no doubt depicted to him
+as the most incisive reasoner and most energetic agent in Europe.
+Holmes slowly reopened his eyes and looked impatiently at his
+gigantic client.
+
+"If your Majesty would condescend to state your case," he
+remarked, "I should be better able to advise you."
+
+The man sprang from his chair and paced up and down the room in
+uncontrollable agitation. Then, with a gesture of desperation, he
+tore the mask from his face and hurled it upon the ground. "You
+are right," he cried; "I am the King. Why should I attempt to
+conceal it?"
+
+"Why, indeed?" murmured Holmes. "Your Majesty had not spoken
+before I was aware that I was addressing Wilhelm Gottsreich
+Sigismond von Ormstein, Grand Duke of Cassel-Felstein, and
+hereditary King of Bohemia."
+
+"But you can understand," said our strange visitor, sitting down
+once more and passing his hand over his high white forehead, "you
+can understand that I am not accustomed to doing such business in
+my own person. Yet the matter was so delicate that I could not
+confide it to an agent without putting myself in his power. I
+have come incognito from Prague for the purpose of consulting
+you."
+
+"Then, pray consult," said Holmes, shutting his eyes once more.
+
+"The facts are briefly these: Some five years ago, during a
+lengthy visit to Warsaw, I made the acquaintance of the well-known
+adventuress, Irene Adler. The name is no doubt familiar to you."
+
+"Kindly look her up in my index, Doctor," murmured Holmes without
+opening his eyes. For many years he had adopted a system of
+docketing all paragraphs concerning men and things, so that it
+was difficult to name a subject or a person on which he could not
+at once furnish information. In this case I found her biography
+sandwiched in between that of a Hebrew rabbi and that of a
+staff-commander who had written a monograph upon the deep-sea
+fishes.
+
+"Let me see!" said Holmes. "Hum! Born in New Jersey in the year
+1858. Contralto--hum! La Scala, hum! Prima donna Imperial Opera
+of Warsaw--yes! Retired from operatic stage--ha! Living in
+London--quite so! Your Majesty, as I understand, became entangled
+with this young person, wrote her some compromising letters, and
+is now desirous of getting those letters back."
+
+"Precisely so. But how--"
+
+"Was there a secret marriage?"
+
+"None."
+
+"No legal papers or certificates?"
+
+"None."
+
+"Then I fail to follow your Majesty. If this young person should
+produce her letters for blackmailing or other purposes, how is
+she to prove their authenticity?"
+
+"There is the writing."
+
+"Pooh, pooh! Forgery."
+
+"My private note-paper."
+
+"Stolen."
+
+"My own seal."
+
+"Imitated."
+
+"My photograph."
+
+"Bought."
+
+"We were both in the photograph."
+
+"Oh, dear! That is very bad! Your Majesty has indeed committed an
+indiscretion."
+
+"I was mad--insane."
+
+"You have compromised yourself seriously."
+
+"I was only Crown Prince then. I was young. I am but thirty now."
+
+"It must be recovered."
+
+"We have tried and failed."
+
+"Your Majesty must pay. It must be bought."
+
+"She will not sell."
+
+"Stolen, then."
+
+"Five attempts have been made. Twice burglars in my pay ransacked
+her house. Once we diverted her luggage when she travelled. Twice
+she has been waylaid. There has been no result."
+
+"No sign of it?"
+
+"Absolutely none."
+
+Holmes laughed. "It is quite a pretty little problem," said he.
+
+"But a very serious one to me," returned the King reproachfully.
+
+"Very, indeed. And what does she propose to do with the
+photograph?"
+
+"To ruin me."
+
+"But how?"
+
+"I am about to be married."
+
+"So I have heard."
+
+"To Clotilde Lothman von Saxe-Meningen, second daughter of the
+King of Scandinavia. You may know the strict principles of her
+family. She is herself the very soul of delicacy. A shadow of a
+doubt as to my conduct would bring the matter to an end."
+
+"And Irene Adler?"
+
+"Threatens to send them the photograph. And she will do it. I
+know that she will do it. You do not know her, but she has a soul
+of steel. She has the face of the most beautiful of women, and
+the mind of the most resolute of men. Rather than I should marry
+another woman, there are no lengths to which she would not
+go--none."
+
+"You are sure that she has not sent it yet?"
+
+"I am sure."
+
+"And why?"
+
+"Because she has said that she would send it on the day when the
+betrothal was publicly proclaimed. That will be next Monday."
+
+"Oh, then we have three days yet," said Holmes with a yawn. "That
+is very fortunate, as I have one or two matters of importance to
+look into just at present. Your Majesty will, of course, stay in
+London for the present?"
+
+"Certainly. You will find me at the Langham under the name of the
+Count Von Kramm."
+
+"Then I shall drop you a line to let you know how we progress."
+
+"Pray do so. I shall be all anxiety."
+
+"Then, as to money?"
+
+"You have carte blanche."
+
+"Absolutely?"
+
+"I tell you that I would give one of the provinces of my kingdom
+to have that photograph."
+
+"And for present expenses?"
+
+The King took a heavy chamois leather bag from under his cloak
+and laid it on the table.
+
+"There are three hundred pounds in gold and seven hundred in
+notes," he said.
+
+Holmes scribbled a receipt upon a sheet of his note-book and
+handed it to him.
+
+"And Mademoiselle's address?" he asked.
+
+"Is Briony Lodge, Serpentine Avenue, St. John's Wood."
+
+Holmes took a note of it. "One other question," said he. "Was the
+photograph a cabinet?"
+
+"It was."
+
+"Then, good-night, your Majesty, and I trust that we shall soon
+have some good news for you. And good-night, Watson," he added,
+as the wheels of the royal brougham rolled down the street. "If
+you will be good enough to call to-morrow afternoon at three
+o'clock I should like to chat this little matter over with you."
+
+
+II.
+
+At three o'clock precisely I was at Baker Street, but Holmes had
+not yet returned. The landlady informed me that he had left the
+house shortly after eight o'clock in the morning. I sat down
+beside the fire, however, with the intention of awaiting him,
+however long he might be. I was already deeply interested in his
+inquiry, for, though it was surrounded by none of the grim and
+strange features which were associated with the two crimes which
+I have already recorded, still, the nature of the case and the
+exalted station of his client gave it a character of its own.
+Indeed, apart from the nature of the investigation which my
+friend had on hand, there was something in his masterly grasp of
+a situation, and his keen, incisive reasoning, which made it a
+pleasure to me to study his system of work, and to follow the
+quick, subtle methods by which he disentangled the most
+inextricable mysteries. So accustomed was I to his invariable
+success that the very possibility of his failing had ceased to
+enter into my head.
+
+It was close upon four before the door opened, and a
+drunken-looking groom, ill-kempt and side-whiskered, with an
+inflamed face and disreputable clothes, walked into the room.
+Accustomed as I was to my friend's amazing powers in the use of
+disguises, I had to look three times before I was certain that it
+was indeed he. With a nod he vanished into the bedroom, whence he
+emerged in five minutes tweed-suited and respectable, as of old.
+Putting his hands into his pockets, he stretched out his legs in
+front of the fire and laughed heartily for some minutes.
+
+"Well, really!" he cried, and then he choked and laughed again
+until he was obliged to lie back, limp and helpless, in the
+chair.
+
+"What is it?"
+
+"It's quite too funny. I am sure you could never guess how I
+employed my morning, or what I ended by doing."
+
+"I can't imagine. I suppose that you have been watching the
+habits, and perhaps the house, of Miss Irene Adler."
+
+"Quite so; but the sequel was rather unusual. I will tell you,
+however. I left the house a little after eight o'clock this
+morning in the character of a groom out of work. There is a
+wonderful sympathy and freemasonry among horsey men. Be one of
+them, and you will know all that there is to know. I soon found
+Briony Lodge. It is a bijou villa, with a garden at the back, but
+built out in front right up to the road, two stories. Chubb lock
+to the door. Large sitting-room on the right side, well
+furnished, with long windows almost to the floor, and those
+preposterous English window fasteners which a child could open.
+Behind there was nothing remarkable, save that the passage window
+could be reached from the top of the coach-house. I walked round
+it and examined it closely from every point of view, but without
+noting anything else of interest.
+
+"I then lounged down the street and found, as I expected, that
+there was a mews in a lane which runs down by one wall of the
+garden. I lent the ostlers a hand in rubbing down their horses,
+and received in exchange twopence, a glass of half and half, two
+fills of shag tobacco, and as much information as I could desire
+about Miss Adler, to say nothing of half a dozen other people in
+the neighbourhood in whom I was not in the least interested, but
+whose biographies I was compelled to listen to."
+
+"And what of Irene Adler?" I asked.
+
+"Oh, she has turned all the men's heads down in that part. She is
+the daintiest thing under a bonnet on this planet. So say the
+Serpentine-mews, to a man. She lives quietly, sings at concerts,
+drives out at five every day, and returns at seven sharp for
+dinner. Seldom goes out at other times, except when she sings.
+Has only one male visitor, but a good deal of him. He is dark,
+handsome, and dashing, never calls less than once a day, and
+often twice. He is a Mr. Godfrey Norton, of the Inner Temple. See
+the advantages of a cabman as a confidant. They had driven him
+home a dozen times from Serpentine-mews, and knew all about him.
+When I had listened to all they had to tell, I began to walk up
+and down near Briony Lodge once more, and to think over my plan
+of campaign.
+
+"This Godfrey Norton was evidently an important factor in the
+matter. He was a lawyer. That sounded ominous. What was the
+relation between them, and what the object of his repeated
+visits? Was she his client, his friend, or his mistress? If the
+former, she had probably transferred the photograph to his
+keeping. If the latter, it was less likely. On the issue of this
+question depended whether I should continue my work at Briony
+Lodge, or turn my attention to the gentleman's chambers in the
+Temple. It was a delicate point, and it widened the field of my
+inquiry. I fear that I bore you with these details, but I have to
+let you see my little difficulties, if you are to understand the
+situation."
+
+"I am following you closely," I answered.
+
+"I was still balancing the matter in my mind when a hansom cab
+drove up to Briony Lodge, and a gentleman sprang out. He was a
+remarkably handsome man, dark, aquiline, and moustached--evidently
+the man of whom I had heard. He appeared to be in a
+great hurry, shouted to the cabman to wait, and brushed past the
+maid who opened the door with the air of a man who was thoroughly
+at home.
+
+"He was in the house about half an hour, and I could catch
+glimpses of him in the windows of the sitting-room, pacing up and
+down, talking excitedly, and waving his arms. Of her I could see
+nothing. Presently he emerged, looking even more flurried than
+before. As he stepped up to the cab, he pulled a gold watch from
+his pocket and looked at it earnestly, 'Drive like the devil,' he
+shouted, 'first to Gross & Hankey's in Regent Street, and then to
+the Church of St. Monica in the Edgeware Road. Half a guinea if
+you do it in twenty minutes!'
+
+"Away they went, and I was just wondering whether I should not do
+well to follow them when up the lane came a neat little landau,
+the coachman with his coat only half-buttoned, and his tie under
+his ear, while all the tags of his harness were sticking out of
+the buckles. It hadn't pulled up before she shot out of the hall
+door and into it. I only caught a glimpse of her at the moment,
+but she was a lovely woman, with a face that a man might die for.
+
+"'The Church of St. Monica, John,' she cried, 'and half a
+sovereign if you reach it in twenty minutes.'
+
+"This was quite too good to lose, Watson. I was just balancing
+whether I should run for it, or whether I should perch behind her
+landau when a cab came through the street. The driver looked
+twice at such a shabby fare, but I jumped in before he could
+object. 'The Church of St. Monica,' said I, 'and half a sovereign
+if you reach it in twenty minutes.' It was twenty-five minutes to
+twelve, and of course it was clear enough what was in the wind.
+
+"My cabby drove fast. I don't think I ever drove faster, but the
+others were there before us. The cab and the landau with their
+steaming horses were in front of the door when I arrived. I paid
+the man and hurried into the church. There was not a soul there
+save the two whom I had followed and a surpliced clergyman, who
+seemed to be expostulating with them. They were all three
+standing in a knot in front of the altar. I lounged up the side
+aisle like any other idler who has dropped into a church.
+Suddenly, to my surprise, the three at the altar faced round to
+me, and Godfrey Norton came running as hard as he could towards
+me.
+
+"'Thank God,' he cried. 'You'll do. Come! Come!'
+
+"'What then?' I asked.
+
+"'Come, man, come, only three minutes, or it won't be legal.'
+
+"I was half-dragged up to the altar, and before I knew where I was
+I found myself mumbling responses which were whispered in my ear,
+and vouching for things of which I knew nothing, and generally
+assisting in the secure tying up of Irene Adler, spinster, to
+Godfrey Norton, bachelor. It was all done in an instant, and
+there was the gentleman thanking me on the one side and the lady
+on the other, while the clergyman beamed on me in front. It was
+the most preposterous position in which I ever found myself in my
+life, and it was the thought of it that started me laughing just
+now. It seems that there had been some informality about their
+license, that the clergyman absolutely refused to marry them
+without a witness of some sort, and that my lucky appearance
+saved the bridegroom from having to sally out into the streets in
+search of a best man. The bride gave me a sovereign, and I mean
+to wear it on my watch-chain in memory of the occasion."
+
+"This is a very unexpected turn of affairs," said I; "and what
+then?"
+
+"Well, I found my plans very seriously menaced. It looked as if
+the pair might take an immediate departure, and so necessitate
+very prompt and energetic measures on my part. At the church
+door, however, they separated, he driving back to the Temple, and
+she to her own house. 'I shall drive out in the park at five as
+usual,' she said as she left him. I heard no more. They drove
+away in different directions, and I went off to make my own
+arrangements."
+
+"Which are?"
+
+"Some cold beef and a glass of beer," he answered, ringing the
+bell. "I have been too busy to think of food, and I am likely to
+be busier still this evening. By the way, Doctor, I shall want
+your co-operation."
+
+"I shall be delighted."
+
+"You don't mind breaking the law?"
+
+"Not in the least."
+
+"Nor running a chance of arrest?"
+
+"Not in a good cause."
+
+"Oh, the cause is excellent!"
+
+"Then I am your man."
+
+"I was sure that I might rely on you."
+
+"But what is it you wish?"
+
+"When Mrs. Turner has brought in the tray I will make it clear to
+you. Now," he said as he turned hungrily on the simple fare that
+our landlady had provided, "I must discuss it while I eat, for I
+have not much time. It is nearly five now. In two hours we must
+be on the scene of action. Miss Irene, or Madame, rather, returns
+from her drive at seven. We must be at Briony Lodge to meet her."
+
+"And what then?"
+
+"You must leave that to me. I have already arranged what is to
+occur. There is only one point on which I must insist. You must
+not interfere, come what may. You understand?"
+
+"I am to be neutral?"
+
+"To do nothing whatever. There will probably be some small
+unpleasantness. Do not join in it. It will end in my being
+conveyed into the house. Four or five minutes afterwards the
+sitting-room window will open. You are to station yourself close
+to that open window."
+
+"Yes."
+
+"You are to watch me, for I will be visible to you."
+
+"Yes."
+
+"And when I raise my hand--so--you will throw into the room what
+I give you to throw, and will, at the same time, raise the cry of
+fire. You quite follow me?"
+
+"Entirely."
+
+"It is nothing very formidable," he said, taking a long cigar-shaped
+roll from his pocket. "It is an ordinary plumber's smoke-rocket,
+fitted with a cap at either end to make it self-lighting.
+Your task is confined to that. When you raise your cry of fire,
+it will be taken up by quite a number of people. You may then
+walk to the end of the street, and I will rejoin you in ten
+minutes. I hope that I have made myself clear?"
+
+"I am to remain neutral, to get near the window, to watch you,
+and at the signal to throw in this object, then to raise the cry
+of fire, and to wait you at the corner of the street."
+
+"Precisely."
+
+"Then you may entirely rely on me."
+
+"That is excellent. I think, perhaps, it is almost time that I
+prepare for the new role I have to play."
+
+He disappeared into his bedroom and returned in a few minutes in
+the character of an amiable and simple-minded Nonconformist
+clergyman. His broad black hat, his baggy trousers, his white
+tie, his sympathetic smile, and general look of peering and
+benevolent curiosity were such as Mr. John Hare alone could have
+equalled. It was not merely that Holmes changed his costume. His
+expression, his manner, his very soul seemed to vary with every
+fresh part that he assumed. The stage lost a fine actor, even as
+science lost an acute reasoner, when he became a specialist in
+crime.
+
+It was a quarter past six when we left Baker Street, and it still
+wanted ten minutes to the hour when we found ourselves in
+Serpentine Avenue. It was already dusk, and the lamps were just
+being lighted as we paced up and down in front of Briony Lodge,
+waiting for the coming of its occupant. The house was just such
+as I had pictured it from Sherlock Holmes' succinct description,
+but the locality appeared to be less private than I expected. On
+the contrary, for a small street in a quiet neighbourhood, it was
+remarkably animated. There was a group of shabbily dressed men
+smoking and laughing in a corner, a scissors-grinder with his
+wheel, two guardsmen who were flirting with a nurse-girl, and
+several well-dressed young men who were lounging up and down with
+cigars in their mouths.
+
+"You see," remarked Holmes, as we paced to and fro in front of
+the house, "this marriage rather simplifies matters. The
+photograph becomes a double-edged weapon now. The chances are
+that she would be as averse to its being seen by Mr. Godfrey
+Norton, as our client is to its coming to the eyes of his
+princess. Now the question is, Where are we to find the
+photograph?"
+
+"Where, indeed?"
+
+"It is most unlikely that she carries it about with her. It is
+cabinet size. Too large for easy concealment about a woman's
+dress. She knows that the King is capable of having her waylaid
+and searched. Two attempts of the sort have already been made. We
+may take it, then, that she does not carry it about with her."
+
+"Where, then?"
+
+"Her banker or her lawyer. There is that double possibility. But
+I am inclined to think neither. Women are naturally secretive,
+and they like to do their own secreting. Why should she hand it
+over to anyone else? She could trust her own guardianship, but
+she could not tell what indirect or political influence might be
+brought to bear upon a business man. Besides, remember that she
+had resolved to use it within a few days. It must be where she
+can lay her hands upon it. It must be in her own house."
+
+"But it has twice been burgled."
+
+"Pshaw! They did not know how to look."
+
+"But how will you look?"
+
+"I will not look."
+
+"What then?"
+
+"I will get her to show me."
+
+"But she will refuse."
+
+"She will not be able to. But I hear the rumble of wheels. It is
+her carriage. Now carry out my orders to the letter."
+
+As he spoke the gleam of the side-lights of a carriage came round
+the curve of the avenue. It was a smart little landau which
+rattled up to the door of Briony Lodge. As it pulled up, one of
+the loafing men at the corner dashed forward to open the door in
+the hope of earning a copper, but was elbowed away by another
+loafer, who had rushed up with the same intention. A fierce
+quarrel broke out, which was increased by the two guardsmen, who
+took sides with one of the loungers, and by the scissors-grinder,
+who was equally hot upon the other side. A blow was struck, and
+in an instant the lady, who had stepped from her carriage, was
+the centre of a little knot of flushed and struggling men, who
+struck savagely at each other with their fists and sticks. Holmes
+dashed into the crowd to protect the lady; but just as he reached
+her he gave a cry and dropped to the ground, with the blood
+running freely down his face. At his fall the guardsmen took to
+their heels in one direction and the loungers in the other, while
+a number of better-dressed people, who had watched the scuffle
+without taking part in it, crowded in to help the lady and to
+attend to the injured man. Irene Adler, as I will still call her,
+had hurried up the steps; but she stood at the top with her
+superb figure outlined against the lights of the hall, looking
+back into the street.
+
+"Is the poor gentleman much hurt?" she asked.
+
+"He is dead," cried several voices.
+
+"No, no, there's life in him!" shouted another. "But he'll be
+gone before you can get him to hospital."
+
+"He's a brave fellow," said a woman. "They would have had the
+lady's purse and watch if it hadn't been for him. They were a
+gang, and a rough one, too. Ah, he's breathing now."
+
+"He can't lie in the street. May we bring him in, marm?"
+
+"Surely. Bring him into the sitting-room. There is a comfortable
+sofa. This way, please!"
+
+Slowly and solemnly he was borne into Briony Lodge and laid out
+in the principal room, while I still observed the proceedings
+from my post by the window. The lamps had been lit, but the
+blinds had not been drawn, so that I could see Holmes as he lay
+upon the couch. I do not know whether he was seized with
+compunction at that moment for the part he was playing, but I
+know that I never felt more heartily ashamed of myself in my life
+than when I saw the beautiful creature against whom I was
+conspiring, or the grace and kindliness with which she waited
+upon the injured man. And yet it would be the blackest treachery
+to Holmes to draw back now from the part which he had intrusted
+to me. I hardened my heart, and took the smoke-rocket from under
+my ulster. After all, I thought, we are not injuring her. We are
+but preventing her from injuring another.
+
+Holmes had sat up upon the couch, and I saw him motion like a man
+who is in need of air. A maid rushed across and threw open the
+window. At the same instant I saw him raise his hand and at the
+signal I tossed my rocket into the room with a cry of "Fire!" The
+word was no sooner out of my mouth than the whole crowd of
+spectators, well dressed and ill--gentlemen, ostlers, and
+servant-maids--joined in a general shriek of "Fire!" Thick clouds
+of smoke curled through the room and out at the open window. I
+caught a glimpse of rushing figures, and a moment later the voice
+of Holmes from within assuring them that it was a false alarm.
+Slipping through the shouting crowd I made my way to the corner
+of the street, and in ten minutes was rejoiced to find my
+friend's arm in mine, and to get away from the scene of uproar.
+He walked swiftly and in silence for some few minutes until we
+had turned down one of the quiet streets which lead towards the
+Edgeware Road.
+
+"You did it very nicely, Doctor," he remarked. "Nothing could
+have been better. It is all right."
+
+"You have the photograph?"
+
+"I know where it is."
+
+"And how did you find out?"
+
+"She showed me, as I told you she would."
+
+"I am still in the dark."
+
+"I do not wish to make a mystery," said he, laughing. "The matter
+was perfectly simple. You, of course, saw that everyone in the
+street was an accomplice. They were all engaged for the evening."
+
+"I guessed as much."
+
+"Then, when the row broke out, I had a little moist red paint in
+the palm of my hand. I rushed forward, fell down, clapped my hand
+to my face, and became a piteous spectacle. It is an old trick."
+
+"That also I could fathom."
+
+"Then they carried me in. She was bound to have me in. What else
+could she do? And into her sitting-room, which was the very room
+which I suspected. It lay between that and her bedroom, and I was
+determined to see which. They laid me on a couch, I motioned for
+air, they were compelled to open the window, and you had your
+chance."
+
+"How did that help you?"
+
+"It was all-important. When a woman thinks that her house is on
+fire, her instinct is at once to rush to the thing which she
+values most. It is a perfectly overpowering impulse, and I have
+more than once taken advantage of it. In the case of the
+Darlington substitution scandal it was of use to me, and also in
+the Arnsworth Castle business. A married woman grabs at her baby;
+an unmarried one reaches for her jewel-box. Now it was clear to
+me that our lady of to-day had nothing in the house more precious
+to her than what we are in quest of. She would rush to secure it.
+The alarm of fire was admirably done. The smoke and shouting were
+enough to shake nerves of steel. She responded beautifully. The
+photograph is in a recess behind a sliding panel just above the
+right bell-pull. She was there in an instant, and I caught a
+glimpse of it as she half-drew it out. When I cried out that it
+was a false alarm, she replaced it, glanced at the rocket, rushed
+from the room, and I have not seen her since. I rose, and, making
+my excuses, escaped from the house. I hesitated whether to
+attempt to secure the photograph at once; but the coachman had
+come in, and as he was watching me narrowly it seemed safer to
+wait. A little over-precipitance may ruin all."
+
+"And now?" I asked.
+
+"Our quest is practically finished. I shall call with the King
+to-morrow, and with you, if you care to come with us. We will be
+shown into the sitting-room to wait for the lady, but it is
+probable that when she comes she may find neither us nor the
+photograph. It might be a satisfaction to his Majesty to regain
+it with his own hands."
+
+"And when will you call?"
+
+"At eight in the morning. She will not be up, so that we shall
+have a clear field. Besides, we must be prompt, for this marriage
+may mean a complete change in her life and habits. I must wire to
+the King without delay."
+
+We had reached Baker Street and had stopped at the door. He was
+searching his pockets for the key when someone passing said:
+
+"Good-night, Mister Sherlock Holmes."
+
+There were several people on the pavement at the time, but the
+greeting appeared to come from a slim youth in an ulster who had
+hurried by.
+
+"I've heard that voice before," said Holmes, staring down the
+dimly lit street. "Now, I wonder who the deuce that could have
+been."
+
+
+III.
+
+I slept at Baker Street that night, and we were engaged upon our
+toast and coffee in the morning when the King of Bohemia rushed
+into the room.
+
+"You have really got it!" he cried, grasping Sherlock Holmes by
+either shoulder and looking eagerly into his face.
+
+"Not yet."
+
+"But you have hopes?"
+
+"I have hopes."
+
+"Then, come. I am all impatience to be gone."
+
+"We must have a cab."
+
+"No, my brougham is waiting."
+
+"Then that will simplify matters." We descended and started off
+once more for Briony Lodge.
+
+"Irene Adler is married," remarked Holmes.
+
+"Married! When?"
+
+"Yesterday."
+
+"But to whom?"
+
+"To an English lawyer named Norton."
+
+"But she could not love him."
+
+"I am in hopes that she does."
+
+"And why in hopes?"
+
+"Because it would spare your Majesty all fear of future
+annoyance. If the lady loves her husband, she does not love your
+Majesty. If she does not love your Majesty, there is no reason
+why she should interfere with your Majesty's plan."
+
+"It is true. And yet--Well! I wish she had been of my own
+station! What a queen she would have made!" He relapsed into a
+moody silence, which was not broken until we drew up in
+Serpentine Avenue.
+
+The door of Briony Lodge was open, and an elderly woman stood
+upon the steps. She watched us with a sardonic eye as we stepped
+from the brougham.
+
+"Mr. Sherlock Holmes, I believe?" said she.
+
+"I am Mr. Holmes," answered my companion, looking at her with a
+questioning and rather startled gaze.
+
+"Indeed! My mistress told me that you were likely to call. She
+left this morning with her husband by the 5:15 train from Charing
+Cross for the Continent."
+
+"What!" Sherlock Holmes staggered back, white with chagrin and
+surprise. "Do you mean that she has left England?"
+
+"Never to return."
+
+"And the papers?" asked the King hoarsely. "All is lost."
+
+"We shall see." He pushed past the servant and rushed into the
+drawing-room, followed by the King and myself. The furniture was
+scattered about in every direction, with dismantled shelves and
+open drawers, as if the lady had hurriedly ransacked them before
+her flight. Holmes rushed at the bell-pull, tore back a small
+sliding shutter, and, plunging in his hand, pulled out a
+photograph and a letter. The photograph was of Irene Adler
+herself in evening dress, the letter was superscribed to
+"Sherlock Holmes, Esq. To be left till called for." My friend
+tore it open and we all three read it together. It was dated at
+midnight of the preceding night and ran in this way:
+
+"MY DEAR MR. SHERLOCK HOLMES,--You really did it very well. You
+took me in completely. Until after the alarm of fire, I had not a
+suspicion. But then, when I found how I had betrayed myself, I
+began to think. I had been warned against you months ago. I had
+been told that if the King employed an agent it would certainly
+be you. And your address had been given me. Yet, with all this,
+you made me reveal what you wanted to know. Even after I became
+suspicious, I found it hard to think evil of such a dear, kind
+old clergyman. But, you know, I have been trained as an actress
+myself. Male costume is nothing new to me. I often take advantage
+of the freedom which it gives. I sent John, the coachman, to
+watch you, ran up stairs, got into my walking-clothes, as I call
+them, and came down just as you departed.
+
+"Well, I followed you to your door, and so made sure that I was
+really an object of interest to the celebrated Mr. Sherlock
+Holmes. Then I, rather imprudently, wished you good-night, and
+started for the Temple to see my husband.
+
+"We both thought the best resource was flight, when pursued by
+so formidable an antagonist; so you will find the nest empty when
+you call to-morrow. As to the photograph, your client may rest in
+peace. I love and am loved by a better man than he. The King may
+do what he will without hindrance from one whom he has cruelly
+wronged. I keep it only to safeguard myself, and to preserve a
+weapon which will always secure me from any steps which he might
+take in the future. I leave a photograph which he might care to
+possess; and I remain, dear Mr. Sherlock Holmes,
+
+                                      "Very truly yours,
+                                   "IRENE NORTON, née ADLER."
+
+"What a woman--oh, what a woman!" cried the King of Bohemia, when
+we had all three read this epistle. "Did I not tell you how quick
+and resolute she was? Would she not have made an admirable queen?
+Is it not a pity that she was not on my level?"
+
+"From what I have seen of the lady she seems indeed to be on a
+very different level to your Majesty," said Holmes coldly. "I am
+sorry that I have not been able to bring your Majesty's business
+to a more successful conclusion."
+
+"On the contrary, my dear sir," cried the King; "nothing could be
+more successful. I know that her word is inviolate. The
+photograph is now as safe as if it were in the fire."
+
+"I am glad to hear your Majesty say so."
+
+"I am immensely indebted to you. Pray tell me in what way I can
+reward you. This ring--" He slipped an emerald snake ring from
+his finger and held it out upon the palm of his hand.
+
+"Your Majesty has something which I should value even more
+highly," said Holmes.
+
+"You have but to name it."
+
+"This photograph!"
+
+The King stared at him in amazement.
+
+"Irene's photograph!" he cried. "Certainly, if you wish it."
+
+"I thank your Majesty. Then there is no more to be done in the
+matter. I have the honour to wish you a very good-morning." He
+bowed, and, turning away without observing the hand which the
+King had stretched out to him, he set off in my company for his
+chambers.
+
+And that was how a great scandal threatened to affect the kingdom
+of Bohemia, and how the best plans of Mr. Sherlock Holmes were
+beaten by a woman's wit. He used to make merry over the
+cleverness of women, but I have not heard him do it of late. And
+when he speaks of Irene Adler, or when he refers to her
+photograph, it is always under the honourable title of the woman.
+
+
+
+ADVENTURE II. THE RED-HEADED LEAGUE
+
+I had called upon my friend, Mr. Sherlock Holmes, one day in the
+autumn of last year and found him in deep conversation with a
+very stout, florid-faced, elderly gentleman with fiery red hair.
+With an apology for my intrusion, I was about to withdraw when
+Holmes pulled me abruptly into the room and closed the door
+behind me.
+
+"You could not possibly have come at a better time, my dear
+Watson," he said cordially.
+
+"I was afraid that you were engaged."
+
+"So I am. Very much so."
+
+"Then I can wait in the next room."
+
+"Not at all. This gentleman, Mr. Wilson, has been my partner and
+helper in many of my most successful cases, and I have no
+doubt that he will be of the utmost use to me in yours also."
+
+The stout gentleman half rose from his chair and gave a bob of
+greeting, with a quick little questioning glance from his small
+fat-encircled eyes.
+
+"Try the settee," said Holmes, relapsing into his armchair and
+putting his fingertips together, as was his custom when in
+judicial moods. "I know, my dear Watson, that you share my love
+of all that is bizarre and outside the conventions and humdrum
+routine of everyday life. You have shown your relish for it by
+the enthusiasm which has prompted you to chronicle, and, if you
+will excuse my saying so, somewhat to embellish so many of my own
+little adventures."
+
+"Your cases have indeed been of the greatest interest to me," I
+observed.
+
+"You will remember that I remarked the other day, just before we
+went into the very simple problem presented by Miss Mary
+Sutherland, that for strange effects and extraordinary
+combinations we must go to life itself, which is always far more
+daring than any effort of the imagination."
+
+"A proposition which I took the liberty of doubting."
+
+"You did, Doctor, but none the less you must come round to my
+view, for otherwise I shall keep on piling fact upon fact on you
+until your reason breaks down under them and acknowledges me to
+be right. Now, Mr. Jabez Wilson here has been good enough to call
+upon me this morning, and to begin a narrative which promises to
+be one of the most singular which I have listened to for some
+time. You have heard me remark that the strangest and most unique
+things are very often connected not with the larger but with the
+smaller crimes, and occasionally, indeed, where there is room for
+doubt whether any positive crime has been committed. As far as I
+have heard it is impossible for me to say whether the present
+case is an instance of crime or not, but the course of events is
+certainly among the most singular that I have ever listened to.
+Perhaps, Mr. Wilson, you would have the great kindness to
+recommence your narrative. I ask you not merely because my friend
+Dr. Watson has not heard the opening part but also because the
+peculiar nature of the story makes me anxious to have every
+possible detail from your lips. As a rule, when I have heard some
+slight indication of the course of events, I am able to guide
+myself by the thousands of other similar cases which occur to my
+memory. In the present instance I am forced to admit that the
+facts are, to the best of my belief, unique."
+
+The portly client puffed out his chest with an appearance of some
+little pride and pulled a dirty and wrinkled newspaper from the
+inside pocket of his greatcoat. As he glanced down the
+advertisement column, with his head thrust forward and the paper
+flattened out upon his knee, I took a good look at the man and
+endeavoured, after the fashion of my companion, to read the
+indications which might be presented by his dress or appearance.
+
+I did not gain very much, however, by my inspection. Our visitor
+bore every mark of being an average commonplace British
+tradesman, obese, pompous, and slow. He wore rather baggy grey
+shepherd's check trousers, a not over-clean black frock-coat,
+unbuttoned in the front, and a drab waistcoat with a heavy brassy
+Albert chain, and a square pierced bit of metal dangling down as
+an ornament. A frayed top-hat and a faded brown overcoat with a
+wrinkled velvet collar lay upon a chair beside him. Altogether,
+look as I would, there was nothing remarkable about the man save
+his blazing red head, and the expression of extreme chagrin and
+discontent upon his features.
+
+Sherlock Holmes' quick eye took in my occupation, and he shook
+his head with a smile as he noticed my questioning glances.
+"Beyond the obvious facts that he has at some time done manual
+labour, that he takes snuff, that he is a Freemason, that he has
+been in China, and that he has done a considerable amount of
+writing lately, I can deduce nothing else."
+
+Mr. Jabez Wilson started up in his chair, with his forefinger
+upon the paper, but his eyes upon my companion.
+
+"How, in the name of good-fortune, did you know all that, Mr.
+Holmes?" he asked. "How did you know, for example, that I did
+manual labour. It's as true as gospel, for I began as a ship's
+carpenter."
+
+"Your hands, my dear sir. Your right hand is quite a size larger
+than your left. You have worked with it, and the muscles are more
+developed."
+
+"Well, the snuff, then, and the Freemasonry?"
+
+"I won't insult your intelligence by telling you how I read that,
+especially as, rather against the strict rules of your order, you
+use an arc-and-compass breastpin."
+
+"Ah, of course, I forgot that. But the writing?"
+
+"What else can be indicated by that right cuff so very shiny for
+five inches, and the left one with the smooth patch near the
+elbow where you rest it upon the desk?"
+
+"Well, but China?"
+
+"The fish that you have tattooed immediately above your right
+wrist could only have been done in China. I have made a small
+study of tattoo marks and have even contributed to the literature
+of the subject. That trick of staining the fishes' scales of a
+delicate pink is quite peculiar to China. When, in addition, I
+see a Chinese coin hanging from your watch-chain, the matter
+becomes even more simple."
+
+Mr. Jabez Wilson laughed heavily. "Well, I never!" said he. "I
+thought at first that you had done something clever, but I see
+that there was nothing in it, after all."
+
+"I begin to think, Watson," said Holmes, "that I make a mistake
+in explaining. 'Omne ignotum pro magnifico,' you know, and my
+poor little reputation, such as it is, will suffer shipwreck if I
+am so candid. Can you not find the advertisement, Mr. Wilson?"
+
+"Yes, I have got it now," he answered with his thick red finger
+planted halfway down the column. "Here it is. This is what began
+it all. You just read it for yourself, sir."
+
+I took the paper from him and read as follows:
+
+"TO THE RED-HEADED LEAGUE: On account of the bequest of the late
+Ezekiah Hopkins, of Lebanon, Pennsylvania, U. S. A., there is now
+another vacancy open which entitles a member of the League to a
+salary of 4 pounds a week for purely nominal services. All
+red-headed men who are sound in body and mind and above the age
+of twenty-one years, are eligible. Apply in person on Monday, at
+eleven o'clock, to Duncan Ross, at the offices of the League, 7
+Pope's Court, Fleet Street."
+
+"What on earth does this mean?" I ejaculated after I had twice
+read over the extraordinary announcement.
+
+Holmes chuckled and wriggled in his chair, as was his habit when
+in high spirits. "It is a little off the beaten track, isn't it?"
+said he. "And now, Mr. Wilson, off you go at scratch and tell us
+all about yourself, your household, and the effect which this
+advertisement had upon your fortunes. You will first make a note,
+Doctor, of the paper and the date."
+
+"It is The Morning Chronicle of April 27, 1890. Just two months
+ago."
+
+"Very good. Now, Mr. Wilson?"
+
+"Well, it is just as I have been telling you, Mr. Sherlock
+Holmes," said Jabez Wilson, mopping his forehead; "I have a small
+pawnbroker's business at Coburg Square, near the City. It's not a
+very large affair, and of late years it has not done more than
+just give me a living. I used to be able to keep two assistants,
+but now I only keep one; and I would have a job to pay him but
+that he is willing to come for half wages so as to learn the
+business."
+
+"What is the name of this obliging youth?" asked Sherlock Holmes.
+
+"His name is Vincent Spaulding, and he's not such a youth,
+either. It's hard to say his age. I should not wish a smarter
+assistant, Mr. Holmes; and I know very well that he could better
+himself and earn twice what I am able to give him. But, after
+all, if he is satisfied, why should I put ideas in his head?"
+
+"Why, indeed? You seem most fortunate in having an employé who
+comes under the full market price. It is not a common experience
+among employers in this age. I don't know that your assistant is
+not as remarkable as your advertisement."
+
+"Oh, he has his faults, too," said Mr. Wilson. "Never was such a
+fellow for photography. Snapping away with a camera when he ought
+to be improving his mind, and then diving down into the cellar
+like a rabbit into its hole to develop his pictures. That is his
+main fault, but on the whole he's a good worker. There's no vice
+in him."
+
+"He is still with you, I presume?"
+
+"Yes, sir. He and a girl of fourteen, who does a bit of simple
+cooking and keeps the place clean--that's all I have in the
+house, for I am a widower and never had any family. We live very
+quietly, sir, the three of us; and we keep a roof over our heads
+and pay our debts, if we do nothing more.
+
+"The first thing that put us out was that advertisement.
+Spaulding, he came down into the office just this day eight
+weeks, with this very paper in his hand, and he says:
+
+"'I wish to the Lord, Mr. Wilson, that I was a red-headed man.'
+
+"'Why that?' I asks.
+
+"'Why,' says he, 'here's another vacancy on the League of the
+Red-headed Men. It's worth quite a little fortune to any man who
+gets it, and I understand that there are more vacancies than
+there are men, so that the trustees are at their wits' end what
+to do with the money. If my hair would only change colour, here's
+a nice little crib all ready for me to step into.'
+
+"'Why, what is it, then?' I asked. You see, Mr. Holmes, I am a
+very stay-at-home man, and as my business came to me instead of
+my having to go to it, I was often weeks on end without putting
+my foot over the door-mat. In that way I didn't know much of what
+was going on outside, and I was always glad of a bit of news.
+
+"'Have you never heard of the League of the Red-headed Men?' he
+asked with his eyes open.
+
+"'Never.'
+
+"'Why, I wonder at that, for you are eligible yourself for one
+of the vacancies.'
+
+"'And what are they worth?' I asked.
+
+"'Oh, merely a couple of hundred a year, but the work is slight,
+and it need not interfere very much with one's other
+occupations.'
+
+"Well, you can easily think that that made me prick up my ears,
+for the business has not been over-good for some years, and an
+extra couple of hundred would have been very handy.
+
+"'Tell me all about it,' said I.
+
+"'Well,' said he, showing me the advertisement, 'you can see for
+yourself that the League has a vacancy, and there is the address
+where you should apply for particulars. As far as I can make out,
+the League was founded by an American millionaire, Ezekiah
+Hopkins, who was very peculiar in his ways. He was himself
+red-headed, and he had a great sympathy for all red-headed men;
+so when he died it was found that he had left his enormous
+fortune in the hands of trustees, with instructions to apply the
+interest to the providing of easy berths to men whose hair is of
+that colour. From all I hear it is splendid pay and very little to
+do.'
+
+"'But,' said I, 'there would be millions of red-headed men who
+would apply.'
+
+"'Not so many as you might think,' he answered. 'You see it is
+really confined to Londoners, and to grown men. This American had
+started from London when he was young, and he wanted to do the
+old town a good turn. Then, again, I have heard it is no use your
+applying if your hair is light red, or dark red, or anything but
+real bright, blazing, fiery red. Now, if you cared to apply, Mr.
+Wilson, you would just walk in; but perhaps it would hardly be
+worth your while to put yourself out of the way for the sake of a
+few hundred pounds.'
+
+"Now, it is a fact, gentlemen, as you may see for yourselves,
+that my hair is of a very full and rich tint, so that it seemed
+to me that if there was to be any competition in the matter I
+stood as good a chance as any man that I had ever met. Vincent
+Spaulding seemed to know so much about it that I thought he might
+prove useful, so I just ordered him to put up the shutters for
+the day and to come right away with me. He was very willing to
+have a holiday, so we shut the business up and started off for
+the address that was given us in the advertisement.
+
+"I never hope to see such a sight as that again, Mr. Holmes. From
+north, south, east, and west every man who had a shade of red in
+his hair had tramped into the city to answer the advertisement.
+Fleet Street was choked with red-headed folk, and Pope's Court
+looked like a coster's orange barrow. I should not have thought
+there were so many in the whole country as were brought together
+by that single advertisement. Every shade of colour they
+were--straw, lemon, orange, brick, Irish-setter, liver, clay;
+but, as Spaulding said, there were not many who had the real
+vivid flame-coloured tint. When I saw how many were waiting, I
+would have given it up in despair; but Spaulding would not hear
+of it. How he did it I could not imagine, but he pushed and
+pulled and butted until he got me through the crowd, and right up
+to the steps which led to the office. There was a double stream
+upon the stair, some going up in hope, and some coming back
+dejected; but we wedged in as well as we could and soon found
+ourselves in the office."
+
+"Your experience has been a most entertaining one," remarked
+Holmes as his client paused and refreshed his memory with a huge
+pinch of snuff. "Pray continue your very interesting statement."
+
+"There was nothing in the office but a couple of wooden chairs
+and a deal table, behind which sat a small man with a head that
+was even redder than mine. He said a few words to each candidate
+as he came up, and then he always managed to find some fault in
+them which would disqualify them. Getting a vacancy did not seem
+to be such a very easy matter, after all. However, when our turn
+came the little man was much more favourable to me than to any of
+the others, and he closed the door as we entered, so that he
+might have a private word with us.
+
+"'This is Mr. Jabez Wilson,' said my assistant, 'and he is
+willing to fill a vacancy in the League.'
+
+"'And he is admirably suited for it,' the other answered. 'He has
+every requirement. I cannot recall when I have seen anything so
+fine.' He took a step backward, cocked his head on one side, and
+gazed at my hair until I felt quite bashful. Then suddenly he
+plunged forward, wrung my hand, and congratulated me warmly on my
+success.
+
+"'It would be injustice to hesitate,' said he. 'You will,
+however, I am sure, excuse me for taking an obvious precaution.'
+With that he seized my hair in both his hands, and tugged until I
+yelled with the pain. 'There is water in your eyes,' said he as
+he released me. 'I perceive that all is as it should be. But we
+have to be careful, for we have twice been deceived by wigs and
+once by paint. I could tell you tales of cobbler's wax which
+would disgust you with human nature.' He stepped over to the
+window and shouted through it at the top of his voice that the
+vacancy was filled. A groan of disappointment came up from below,
+and the folk all trooped away in different directions until there
+was not a red-head to be seen except my own and that of the
+manager.
+
+"'My name,' said he, 'is Mr. Duncan Ross, and I am myself one of
+the pensioners upon the fund left by our noble benefactor. Are
+you a married man, Mr. Wilson? Have you a family?'
+
+"I answered that I had not.
+
+"His face fell immediately.
+
+"'Dear me!' he said gravely, 'that is very serious indeed! I am
+sorry to hear you say that. The fund was, of course, for the
+propagation and spread of the red-heads as well as for their
+maintenance. It is exceedingly unfortunate that you should be a
+bachelor.'
+
+"My face lengthened at this, Mr. Holmes, for I thought that I was
+not to have the vacancy after all; but after thinking it over for
+a few minutes he said that it would be all right.
+
+"'In the case of another,' said he, 'the objection might be
+fatal, but we must stretch a point in favour of a man with such a
+head of hair as yours. When shall you be able to enter upon your
+new duties?'
+
+"'Well, it is a little awkward, for I have a business already,'
+said I.
+
+"'Oh, never mind about that, Mr. Wilson!' said Vincent Spaulding.
+'I should be able to look after that for you.'
+
+"'What would be the hours?' I asked.
+
+"'Ten to two.'
+
+"Now a pawnbroker's business is mostly done of an evening, Mr.
+Holmes, especially Thursday and Friday evening, which is just
+before pay-day; so it would suit me very well to earn a little in
+the mornings. Besides, I knew that my assistant was a good man,
+and that he would see to anything that turned up.
+
+"'That would suit me very well,' said I. 'And the pay?'
+
+"'Is 4 pounds a week.'
+
+"'And the work?'
+
+"'Is purely nominal.'
+
+"'What do you call purely nominal?'
+
+"'Well, you have to be in the office, or at least in the
+building, the whole time. If you leave, you forfeit your whole
+position forever. The will is very clear upon that point. You
+don't comply with the conditions if you budge from the office
+during that time.'
+
+"'It's only four hours a day, and I should not think of leaving,'
+said I.
+
+"'No excuse will avail,' said Mr. Duncan Ross; 'neither sickness
+nor business nor anything else. There you must stay, or you lose
+your billet.'
+
+"'And the work?'
+
+"'Is to copy out the "Encyclopaedia Britannica." There is the first
+volume of it in that press. You must find your own ink, pens, and
+blotting-paper, but we provide this table and chair. Will you be
+ready to-morrow?'
+
+"'Certainly,' I answered.
+
+"'Then, good-bye, Mr. Jabez Wilson, and let me congratulate you
+once more on the important position which you have been fortunate
+enough to gain.' He bowed me out of the room and I went home with
+my assistant, hardly knowing what to say or do, I was so pleased
+at my own good fortune.
+
+"Well, I thought over the matter all day, and by evening I was in
+low spirits again; for I had quite persuaded myself that the
+whole affair must be some great hoax or fraud, though what its
+object might be I could not imagine. It seemed altogether past
+belief that anyone could make such a will, or that they would pay
+such a sum for doing anything so simple as copying out the
+'Encyclopaedia Britannica.' Vincent Spaulding did what he could to
+cheer me up, but by bedtime I had reasoned myself out of the
+whole thing. However, in the morning I determined to have a look
+at it anyhow, so I bought a penny bottle of ink, and with a
+quill-pen, and seven sheets of foolscap paper, I started off for
+Pope's Court.
+
+"Well, to my surprise and delight, everything was as right as
+possible. The table was set out ready for me, and Mr. Duncan Ross
+was there to see that I got fairly to work. He started me off
+upon the letter A, and then he left me; but he would drop in from
+time to time to see that all was right with me. At two o'clock he
+bade me good-day, complimented me upon the amount that I had
+written, and locked the door of the office after me.
+
+"This went on day after day, Mr. Holmes, and on Saturday the
+manager came in and planked down four golden sovereigns for my
+week's work. It was the same next week, and the same the week
+after. Every morning I was there at ten, and every afternoon I
+left at two. By degrees Mr. Duncan Ross took to coming in only
+once of a morning, and then, after a time, he did not come in at
+all. Still, of course, I never dared to leave the room for an
+instant, for I was not sure when he might come, and the billet
+was such a good one, and suited me so well, that I would not risk
+the loss of it.
+
+"Eight weeks passed away like this, and I had written about
+Abbots and Archery and Armour and Architecture and Attica, and
+hoped with diligence that I might get on to the B's before very
+long. It cost me something in foolscap, and I had pretty nearly
+filled a shelf with my writings. And then suddenly the whole
+business came to an end."
+
+"To an end?"
+
+"Yes, sir. And no later than this morning. I went to my work as
+usual at ten o'clock, but the door was shut and locked, with a
+little square of cardboard hammered on to the middle of the
+panel with a tack. Here it is, and you can read for yourself."
+
+He held up a piece of white cardboard about the size of a sheet
+of note-paper. It read in this fashion:
+
+                  THE RED-HEADED LEAGUE
+
+                           IS
+
+                        DISSOLVED.
+
+                     October 9, 1890.
+
+Sherlock Holmes and I surveyed this curt announcement and the
+rueful face behind it, until the comical side of the affair so
+completely overtopped every other consideration that we both
+burst out into a roar of laughter.
+
+"I cannot see that there is anything very funny," cried our
+client, flushing up to the roots of his flaming head. "If you can
+do nothing better than laugh at me, I can go elsewhere."
+
+"No, no," cried Holmes, shoving him back into the chair from
+which he had half risen. "I really wouldn't miss your case for
+the world. It is most refreshingly unusual. But there is, if you
+will excuse my saying so, something just a little funny about it.
+Pray what steps did you take when you found the card upon the
+door?"
+
+"I was staggered, sir. I did not know what to do. Then I called
+at the offices round, but none of them seemed to know anything
+about it. Finally, I went to the landlord, who is an accountant
+living on the ground-floor, and I asked him if he could tell me
+what had become of the Red-headed League. He said that he had
+never heard of any such body. Then I asked him who Mr. Duncan
+Ross was. He answered that the name was new to him.
+
+"'Well,' said I, 'the gentleman at No. 4.'
+
+"'What, the red-headed man?'
+
+"'Yes.'
+
+"'Oh,' said he, 'his name was William Morris. He was a solicitor
+and was using my room as a temporary convenience until his new
+premises were ready. He moved out yesterday.'
+
+"'Where could I find him?'
+
+"'Oh, at his new offices. He did tell me the address. Yes, 17
+King Edward Street, near St. Paul's.'
+
+"I started off, Mr. Holmes, but when I got to that address it was
+a manufactory of artificial knee-caps, and no one in it had ever
+heard of either Mr. William Morris or Mr. Duncan Ross."
+
+"And what did you do then?" asked Holmes.
+
+"I went home to Saxe-Coburg Square, and I took the advice of my
+assistant. But he could not help me in any way. He could only say
+that if I waited I should hear by post. But that was not quite
+good enough, Mr. Holmes. I did not wish to lose such a place
+without a struggle, so, as I had heard that you were good enough
+to give advice to poor folk who were in need of it, I came right
+away to you."
+
+"And you did very wisely," said Holmes. "Your case is an
+exceedingly remarkable one, and I shall be happy to look into it.
+From what you have told me I think that it is possible that
+graver issues hang from it than might at first sight appear."
+
+"Grave enough!" said Mr. Jabez Wilson. "Why, I have lost four
+pound a week."
+
+"As far as you are personally concerned," remarked Holmes, "I do
+not see that you have any grievance against this extraordinary
+league. On the contrary, you are, as I understand, richer by some
+30 pounds, to say nothing of the minute knowledge which you have
+gained on every subject which comes under the letter A. You have
+lost nothing by them."
+
+"No, sir. But I want to find out about them, and who they are,
+and what their object was in playing this prank--if it was a
+prank--upon me. It was a pretty expensive joke for them, for it
+cost them two and thirty pounds."
+
+"We shall endeavour to clear up these points for you. And, first,
+one or two questions, Mr. Wilson. This assistant of yours who
+first called your attention to the advertisement--how long had he
+been with you?"
+
+"About a month then."
+
+"How did he come?"
+
+"In answer to an advertisement."
+
+"Was he the only applicant?"
+
+"No, I had a dozen."
+
+"Why did you pick him?"
+
+"Because he was handy and would come cheap."
+
+"At half-wages, in fact."
+
+"Yes."
+
+"What is he like, this Vincent Spaulding?"
+
+"Small, stout-built, very quick in his ways, no hair on his face,
+though he's not short of thirty. Has a white splash of acid upon
+his forehead."
+
+Holmes sat up in his chair in considerable excitement. "I thought
+as much," said he. "Have you ever observed that his ears are
+pierced for earrings?"
+
+"Yes, sir. He told me that a gipsy had done it for him when he
+was a lad."
+
+"Hum!" said Holmes, sinking back in deep thought. "He is still
+with you?"
+
+"Oh, yes, sir; I have only just left him."
+
+"And has your business been attended to in your absence?"
+
+"Nothing to complain of, sir. There's never very much to do of a
+morning."
+
+"That will do, Mr. Wilson. I shall be happy to give you an
+opinion upon the subject in the course of a day or two. To-day is
+Saturday, and I hope that by Monday we may come to a conclusion."
+
+"Well, Watson," said Holmes when our visitor had left us, "what
+do you make of it all?"
+
+"I make nothing of it," I answered frankly. "It is a most
+mysterious business."
+
+"As a rule," said Holmes, "the more bizarre a thing is the less
+mysterious it proves to be. It is your commonplace, featureless
+crimes which are really puzzling, just as a commonplace face is
+the most difficult to identify. But I must be prompt over this
+matter."
+
+"What are you going to do, then?" I asked.
+
+"To smoke," he answered. "It is quite a three pipe problem, and I
+beg that you won't speak to me for fifty minutes." He curled
+himself up in his chair, with his thin knees drawn up to his
+hawk-like nose, and there he sat with his eyes closed and his
+black clay pipe thrusting out like the bill of some strange bird.
+I had come to the conclusion that he had dropped asleep, and
+indeed was nodding myself, when he suddenly sprang out of his
+chair with the gesture of a man who has made up his mind and put
+his pipe down upon the mantelpiece.
+
+"Sarasate plays at the St. James's Hall this afternoon," he
+remarked. "What do you think, Watson? Could your patients spare
+you for a few hours?"
+
+"I have nothing to do to-day. My practice is never very
+absorbing."
+
+"Then put on your hat and come. I am going through the City
+first, and we can have some lunch on the way. I observe that
+there is a good deal of German music on the programme, which is
+rather more to my taste than Italian or French. It is
+introspective, and I want to introspect. Come along!"
+
+We travelled by the Underground as far as Aldersgate; and a short
+walk took us to Saxe-Coburg Square, the scene of the singular
+story which we had listened to in the morning. It was a poky,
+little, shabby-genteel place, where four lines of dingy
+two-storied brick houses looked out into a small railed-in
+enclosure, where a lawn of weedy grass and a few clumps of faded
+laurel-bushes made a hard fight against a smoke-laden and
+uncongenial atmosphere. Three gilt balls and a brown board with
+"JABEZ WILSON" in white letters, upon a corner house, announced
+the place where our red-headed client carried on his business.
+Sherlock Holmes stopped in front of it with his head on one side
+and looked it all over, with his eyes shining brightly between
+puckered lids. Then he walked slowly up the street, and then down
+again to the corner, still looking keenly at the houses. Finally
+he returned to the pawnbroker's, and, having thumped vigorously
+upon the pavement with his stick two or three times, he went up
+to the door and knocked. It was instantly opened by a
+bright-looking, clean-shaven young fellow, who asked him to step
+in.
+
+"Thank you," said Holmes, "I only wished to ask you how you would
+go from here to the Strand."
+
+"Third right, fourth left," answered the assistant promptly,
+closing the door.
+
+"Smart fellow, that," observed Holmes as we walked away. "He is,
+in my judgment, the fourth smartest man in London, and for daring
+I am not sure that he has not a claim to be third. I have known
+something of him before."
+
+"Evidently," said I, "Mr. Wilson's assistant counts for a good
+deal in this mystery of the Red-headed League. I am sure that you
+inquired your way merely in order that you might see him."
+
+"Not him."
+
+"What then?"
+
+"The knees of his trousers."
+
+"And what did you see?"
+
+"What I expected to see."
+
+"Why did you beat the pavement?"
+
+"My dear doctor, this is a time for observation, not for talk. We
+are spies in an enemy's country. We know something of Saxe-Coburg
+Square. Let us now explore the parts which lie behind it."
+
+The road in which we found ourselves as we turned round the
+corner from the retired Saxe-Coburg Square presented as great a
+contrast to it as the front of a picture does to the back. It was
+one of the main arteries which conveyed the traffic of the City
+to the north and west. The roadway was blocked with the immense
+stream of commerce flowing in a double tide inward and outward,
+while the footpaths were black with the hurrying swarm of
+pedestrians. It was difficult to realise as we looked at the line
+of fine shops and stately business premises that they really
+abutted on the other side upon the faded and stagnant square
+which we had just quitted.
+
+"Let me see," said Holmes, standing at the corner and glancing
+along the line, "I should like just to remember the order of the
+houses here. It is a hobby of mine to have an exact knowledge of
+London. There is Mortimer's, the tobacconist, the little
+newspaper shop, the Coburg branch of the City and Suburban Bank,
+the Vegetarian Restaurant, and McFarlane's carriage-building
+depot. That carries us right on to the other block. And now,
+Doctor, we've done our work, so it's time we had some play. A
+sandwich and a cup of coffee, and then off to violin-land, where
+all is sweetness and delicacy and harmony, and there are no
+red-headed clients to vex us with their conundrums."
+
+My friend was an enthusiastic musician, being himself not only a
+very capable performer but a composer of no ordinary merit. All
+the afternoon he sat in the stalls wrapped in the most perfect
+happiness, gently waving his long, thin fingers in time to the
+music, while his gently smiling face and his languid, dreamy eyes
+were as unlike those of Holmes the sleuth-hound, Holmes the
+relentless, keen-witted, ready-handed criminal agent, as it was
+possible to conceive. In his singular character the dual nature
+alternately asserted itself, and his extreme exactness and
+astuteness represented, as I have often thought, the reaction
+against the poetic and contemplative mood which occasionally
+predominated in him. The swing of his nature took him from
+extreme languor to devouring energy; and, as I knew well, he was
+never so truly formidable as when, for days on end, he had been
+lounging in his armchair amid his improvisations and his
+black-letter editions. Then it was that the lust of the chase
+would suddenly come upon him, and that his brilliant reasoning
+power would rise to the level of intuition, until those who were
+unacquainted with his methods would look askance at him as on a
+man whose knowledge was not that of other mortals. When I saw him
+that afternoon so enwrapped in the music at St. James's Hall I
+felt that an evil time might be coming upon those whom he had set
+himself to hunt down.
+
+"You want to go home, no doubt, Doctor," he remarked as we
+emerged.
+
+"Yes, it would be as well."
+
+"And I have some business to do which will take some hours. This
+business at Coburg Square is serious."
+
+"Why serious?"
+
+"A considerable crime is in contemplation. I have every reason to
+believe that we shall be in time to stop it. But to-day being
+Saturday rather complicates matters. I shall want your help
+to-night."
+
+"At what time?"
+
+"Ten will be early enough."
+
+"I shall be at Baker Street at ten."
+
+"Very well. And, I say, Doctor, there may be some little danger,
+so kindly put your army revolver in your pocket." He waved his
+hand, turned on his heel, and disappeared in an instant among the
+crowd.
+
+I trust that I am not more dense than my neighbours, but I was
+always oppressed with a sense of my own stupidity in my dealings
+with Sherlock Holmes. Here I had heard what he had heard, I had
+seen what he had seen, and yet from his words it was evident that
+he saw clearly not only what had happened but what was about to
+happen, while to me the whole business was still confused and
+grotesque. As I drove home to my house in Kensington I thought
+over it all, from the extraordinary story of the red-headed
+copier of the "Encyclopaedia" down to the visit to Saxe-Coburg
+Square, and the ominous words with which he had parted from me.
+What was this nocturnal expedition, and why should I go armed?
+Where were we going, and what were we to do? I had the hint from
+Holmes that this smooth-faced pawnbroker's assistant was a
+formidable man--a man who might play a deep game. I tried to
+puzzle it out, but gave it up in despair and set the matter aside
+until night should bring an explanation.
+
+It was a quarter-past nine when I started from home and made my
+way across the Park, and so through Oxford Street to Baker
+Street. Two hansoms were standing at the door, and as I entered
+the passage I heard the sound of voices from above. On entering
+his room I found Holmes in animated conversation with two men,
+one of whom I recognised as Peter Jones, the official police
+agent, while the other was a long, thin, sad-faced man, with a
+very shiny hat and oppressively respectable frock-coat.
+
+"Ha! Our party is complete," said Holmes, buttoning up his
+pea-jacket and taking his heavy hunting crop from the rack.
+"Watson, I think you know Mr. Jones, of Scotland Yard? Let me
+introduce you to Mr. Merryweather, who is to be our companion in
+to-night's adventure."
+
+"We're hunting in couples again, Doctor, you see," said Jones in
+his consequential way. "Our friend here is a wonderful man for
+starting a chase. All he wants is an old dog to help him to do
+the running down."
+
+"I hope a wild goose may not prove to be the end of our chase,"
+observed Mr. Merryweather gloomily.
+
+"You may place considerable confidence in Mr. Holmes, sir," said
+the police agent loftily. "He has his own little methods, which
+are, if he won't mind my saying so, just a little too theoretical
+and fantastic, but he has the makings of a detective in him. It
+is not too much to say that once or twice, as in that business of
+the Sholto murder and the Agra treasure, he has been more nearly
+correct than the official force."
+
+"Oh, if you say so, Mr. Jones, it is all right," said the
+stranger with deference. "Still, I confess that I miss my rubber.
+It is the first Saturday night for seven-and-twenty years that I
+have not had my rubber."
+
+"I think you will find," said Sherlock Holmes, "that you will
+play for a higher stake to-night than you have ever done yet, and
+that the play will be more exciting. For you, Mr. Merryweather,
+the stake will be some 30,000 pounds; and for you, Jones, it will
+be the man upon whom you wish to lay your hands."
+
+"John Clay, the murderer, thief, smasher, and forger. He's a
+young man, Mr. Merryweather, but he is at the head of his
+profession, and I would rather have my bracelets on him than on
+any criminal in London. He's a remarkable man, is young John
+Clay. His grandfather was a royal duke, and he himself has been
+to Eton and Oxford. His brain is as cunning as his fingers, and
+though we meet signs of him at every turn, we never know where to
+find the man himself. He'll crack a crib in Scotland one week,
+and be raising money to build an orphanage in Cornwall the next.
+I've been on his track for years and have never set eyes on him
+yet."
+
+"I hope that I may have the pleasure of introducing you to-night.
+I've had one or two little turns also with Mr. John Clay, and I
+agree with you that he is at the head of his profession. It is
+past ten, however, and quite time that we started. If you two
+will take the first hansom, Watson and I will follow in the
+second."
+
+Sherlock Holmes was not very communicative during the long drive
+and lay back in the cab humming the tunes which he had heard in
+the afternoon. We rattled through an endless labyrinth of gas-lit
+streets until we emerged into Farrington Street.
+
+"We are close there now," my friend remarked. "This fellow
+Merryweather is a bank director, and personally interested in the
+matter. I thought it as well to have Jones with us also. He is
+not a bad fellow, though an absolute imbecile in his profession.
+He has one positive virtue. He is as brave as a bulldog and as
+tenacious as a lobster if he gets his claws upon anyone. Here we
+are, and they are waiting for us."
+
+We had reached the same crowded thoroughfare in which we had
+found ourselves in the morning. Our cabs were dismissed, and,
+following the guidance of Mr. Merryweather, we passed down a
+narrow passage and through a side door, which he opened for us.
+Within there was a small corridor, which ended in a very massive
+iron gate. This also was opened, and led down a flight of winding
+stone steps, which terminated at another formidable gate. Mr.
+Merryweather stopped to light a lantern, and then conducted us
+down a dark, earth-smelling passage, and so, after opening a
+third door, into a huge vault or cellar, which was piled all
+round with crates and massive boxes.
+
+"You are not very vulnerable from above," Holmes remarked as he
+held up the lantern and gazed about him.
+
+"Nor from below," said Mr. Merryweather, striking his stick upon
+the flags which lined the floor. "Why, dear me, it sounds quite
+hollow!" he remarked, looking up in surprise.
+
+"I must really ask you to be a little more quiet!" said Holmes
+severely. "You have already imperilled the whole success of our
+expedition. Might I beg that you would have the goodness to sit
+down upon one of those boxes, and not to interfere?"
+
+The solemn Mr. Merryweather perched himself upon a crate, with a
+very injured expression upon his face, while Holmes fell upon his
+knees upon the floor and, with the lantern and a magnifying lens,
+began to examine minutely the cracks between the stones. A few
+seconds sufficed to satisfy him, for he sprang to his feet again
+and put his glass in his pocket.
+
+"We have at least an hour before us," he remarked, "for they can
+hardly take any steps until the good pawnbroker is safely in bed.
+Then they will not lose a minute, for the sooner they do their
+work the longer time they will have for their escape. We are at
+present, Doctor--as no doubt you have divined--in the cellar of
+the City branch of one of the principal London banks. Mr.
+Merryweather is the chairman of directors, and he will explain to
+you that there are reasons why the more daring criminals of
+London should take a considerable interest in this cellar at
+present."
+
+"It is our French gold," whispered the director. "We have had
+several warnings that an attempt might be made upon it."
+
+"Your French gold?"
+
+"Yes. We had occasion some months ago to strengthen our resources
+and borrowed for that purpose 30,000 napoleons from the Bank of
+France. It has become known that we have never had occasion to
+unpack the money, and that it is still lying in our cellar. The
+crate upon which I sit contains 2,000 napoleons packed between
+layers of lead foil. Our reserve of bullion is much larger at
+present than is usually kept in a single branch office, and the
+directors have had misgivings upon the subject."
+
+"Which were very well justified," observed Holmes. "And now it is
+time that we arranged our little plans. I expect that within an
+hour matters will come to a head. In the meantime Mr.
+Merryweather, we must put the screen over that dark lantern."
+
+"And sit in the dark?"
+
+"I am afraid so. I had brought a pack of cards in my pocket, and
+I thought that, as we were a partie carrée, you might have your
+rubber after all. But I see that the enemy's preparations have
+gone so far that we cannot risk the presence of a light. And,
+first of all, we must choose our positions. These are daring men,
+and though we shall take them at a disadvantage, they may do us
+some harm unless we are careful. I shall stand behind this crate,
+and do you conceal yourselves behind those. Then, when I flash a
+light upon them, close in swiftly. If they fire, Watson, have no
+compunction about shooting them down."
+
+I placed my revolver, cocked, upon the top of the wooden case
+behind which I crouched. Holmes shot the slide across the front
+of his lantern and left us in pitch darkness--such an absolute
+darkness as I have never before experienced. The smell of hot
+metal remained to assure us that the light was still there, ready
+to flash out at a moment's notice. To me, with my nerves worked
+up to a pitch of expectancy, there was something depressing and
+subduing in the sudden gloom, and in the cold dank air of the
+vault.
+
+"They have but one retreat," whispered Holmes. "That is back
+through the house into Saxe-Coburg Square. I hope that you have
+done what I asked you, Jones?"
+
+"I have an inspector and two officers waiting at the front door."
+
+"Then we have stopped all the holes. And now we must be silent
+and wait."
+
+What a time it seemed! From comparing notes afterwards it was but
+an hour and a quarter, yet it appeared to me that the night must
+have almost gone and the dawn be breaking above us. My limbs
+were weary and stiff, for I feared to change my position; yet my
+nerves were worked up to the highest pitch of tension, and my
+hearing was so acute that I could not only hear the gentle
+breathing of my companions, but I could distinguish the deeper,
+heavier in-breath of the bulky Jones from the thin, sighing note
+of the bank director. From my position I could look over the case
+in the direction of the floor. Suddenly my eyes caught the glint
+of a light.
+
+At first it was but a lurid spark upon the stone pavement. Then
+it lengthened out until it became a yellow line, and then,
+without any warning or sound, a gash seemed to open and a hand
+appeared, a white, almost womanly hand, which felt about in the
+centre of the little area of light. For a minute or more the
+hand, with its writhing fingers, protruded out of the floor. Then
+it was withdrawn as suddenly as it appeared, and all was dark
+again save the single lurid spark which marked a chink between
+the stones.
+
+Its disappearance, however, was but momentary. With a rending,
+tearing sound, one of the broad, white stones turned over upon
+its side and left a square, gaping hole, through which streamed
+the light of a lantern. Over the edge there peeped a clean-cut,
+boyish face, which looked keenly about it, and then, with a hand
+on either side of the aperture, drew itself shoulder-high and
+waist-high, until one knee rested upon the edge. In another
+instant he stood at the side of the hole and was hauling after
+him a companion, lithe and small like himself, with a pale face
+and a shock of very red hair.
+
+"It's all clear," he whispered. "Have you the chisel and the
+bags? Great Scott! Jump, Archie, jump, and I'll swing for it!"
+
+Sherlock Holmes had sprung out and seized the intruder by the
+collar. The other dived down the hole, and I heard the sound of
+rending cloth as Jones clutched at his skirts. The light flashed
+upon the barrel of a revolver, but Holmes' hunting crop came
+down on the man's wrist, and the pistol clinked upon the stone
+floor.
+
+"It's no use, John Clay," said Holmes blandly. "You have no
+chance at all."
+
+"So I see," the other answered with the utmost coolness. "I fancy
+that my pal is all right, though I see you have got his
+coat-tails."
+
+"There are three men waiting for him at the door," said Holmes.
+
+"Oh, indeed! You seem to have done the thing very completely. I
+must compliment you."
+
+"And I you," Holmes answered. "Your red-headed idea was very new
+and effective."
+
+"You'll see your pal again presently," said Jones. "He's quicker
+at climbing down holes than I am. Just hold out while I fix the
+derbies."
+
+"I beg that you will not touch me with your filthy hands,"
+remarked our prisoner as the handcuffs clattered upon his wrists.
+"You may not be aware that I have royal blood in my veins. Have
+the goodness, also, when you address me always to say 'sir' and
+'please.'"
+
+"All right," said Jones with a stare and a snigger. "Well, would
+you please, sir, march upstairs, where we can get a cab to carry
+your Highness to the police-station?"
+
+"That is better," said John Clay serenely. He made a sweeping bow
+to the three of us and walked quietly off in the custody of the
+detective.
+
+"Really, Mr. Holmes," said Mr. Merryweather as we followed them
+from the cellar, "I do not know how the bank can thank you or
+repay you. There is no doubt that you have detected and defeated
+in the most complete manner one of the most determined attempts
+at bank robbery that have ever come within my experience."
+
+"I have had one or two little scores of my own to settle with Mr.
+John Clay," said Holmes. "I have been at some small expense over
+this matter, which I shall expect the bank to refund, but beyond
+that I am amply repaid by having had an experience which is in
+many ways unique, and by hearing the very remarkable narrative of
+the Red-headed League."
+
+
+"You see, Watson," he explained in the early hours of the morning
+as we sat over a glass of whisky and soda in Baker Street, "it
+was perfectly obvious from the first that the only possible
+object of this rather fantastic business of the advertisement of
+the League, and the copying of the 'Encyclopaedia,' must be to get
+this not over-bright pawnbroker out of the way for a number of
+hours every day. It was a curious way of managing it, but,
+really, it would be difficult to suggest a better. The method was
+no doubt suggested to Clay's ingenious mind by the colour of his
+accomplice's hair. The 4 pounds a week was a lure which must draw
+him, and what was it to them, who were playing for thousands?
+They put in the advertisement, one rogue has the temporary
+office, the other rogue incites the man to apply for it, and
+together they manage to secure his absence every morning in the
+week. From the time that I heard of the assistant having come for
+half wages, it was obvious to me that he had some strong motive
+for securing the situation."
+
+"But how could you guess what the motive was?"
+
+"Had there been women in the house, I should have suspected a
+mere vulgar intrigue. That, however, was out of the question. The
+man's business was a small one, and there was nothing in his
+house which could account for such elaborate preparations, and
+such an expenditure as they were at. It must, then, be something
+out of the house. What could it be? I thought of the assistant's
+fondness for photography, and his trick of vanishing into the
+cellar. The cellar! There was the end of this tangled clue. Then
+I made inquiries as to this mysterious assistant and found that I
+had to deal with one of the coolest and most daring criminals in
+London. He was doing something in the cellar--something which
+took many hours a day for months on end. What could it be, once
+more? I could think of nothing save that he was running a tunnel
+to some other building.
+
+"So far I had got when we went to visit the scene of action. I
+surprised you by beating upon the pavement with my stick. I was
+ascertaining whether the cellar stretched out in front or behind.
+It was not in front. Then I rang the bell, and, as I hoped, the
+assistant answered it. We have had some skirmishes, but we had
+never set eyes upon each other before. I hardly looked at his
+face. His knees were what I wished to see. You must yourself have
+remarked how worn, wrinkled, and stained they were. They spoke of
+those hours of burrowing. The only remaining point was what they
+were burrowing for. I walked round the corner, saw the City and
+Suburban Bank abutted on our friend's premises, and felt that I
+had solved my problem. When you drove home after the concert I
+called upon Scotland Yard and upon the chairman of the bank
+directors, with the result that you have seen."
+
+"And how could you tell that they would make their attempt
+to-night?" I asked.
+
+"Well, when they closed their League offices that was a sign that
+they cared no longer about Mr. Jabez Wilson's presence--in other
+words, that they had completed their tunnel. But it was essential
+that they should use it soon, as it might be discovered, or the
+bullion might be removed. Saturday would suit them better than
+any other day, as it would give them two days for their escape.
+For all these reasons I expected them to come to-night."
+
+"You reasoned it out beautifully," I exclaimed in unfeigned
+admiration. "It is so long a chain, and yet every link rings
+true."
+
+"It saved me from ennui," he answered, yawning. "Alas! I already
+feel it closing in upon me. My life is spent in one long effort
+to escape from the commonplaces of existence. These little
+problems help me to do so."
+
+"And you are a benefactor of the race," said I.
+
+He shrugged his shoulders. "Well, perhaps, after all, it is of
+some little use," he remarked. "'L'homme c'est rien--l'oeuvre
+c'est tout,' as Gustave Flaubert wrote to George Sand."
+
+
+
+ADVENTURE III. A CASE OF IDENTITY
+
+"My dear fellow," said Sherlock Holmes as we sat on either side
+of the fire in his lodgings at Baker Street, "life is infinitely
+stranger than anything which the mind of man could invent. We
+would not dare to conceive the things which are really mere
+commonplaces of existence. If we could fly out of that window
+hand in hand, hover over this great city, gently remove the
+roofs, and peep in at the queer things which are going on, the
+strange coincidences, the plannings, the cross-purposes, the
+wonderful chains of events, working through generations, and
+leading to the most outré results, it would make all fiction with
+its conventionalities and foreseen conclusions most stale and
+unprofitable."
+
+"And yet I am not convinced of it," I answered. "The cases which
+come to light in the papers are, as a rule, bald enough, and
+vulgar enough. We have in our police reports realism pushed to
+its extreme limits, and yet the result is, it must be confessed,
+neither fascinating nor artistic."
+
+"A certain selection and discretion must be used in producing a
+realistic effect," remarked Holmes. "This is wanting in the
+police report, where more stress is laid, perhaps, upon the
+platitudes of the magistrate than upon the details, which to an
+observer contain the vital essence of the whole matter. Depend
+upon it, there is nothing so unnatural as the commonplace."
+
+I smiled and shook my head. "I can quite understand your thinking
+so," I said. "Of course, in your position of unofficial adviser
+and helper to everybody who is absolutely puzzled, throughout
+three continents, you are brought in contact with all that is
+strange and bizarre. But here"--I picked up the morning paper
+from the ground--"let us put it to a practical test. Here is the
+first heading upon which I come. 'A husband's cruelty to his
+wife.' There is half a column of print, but I know without
+reading it that it is all perfectly familiar to me. There is, of
+course, the other woman, the drink, the push, the blow, the
+bruise, the sympathetic sister or landlady. The crudest of
+writers could invent nothing more crude."
+
+"Indeed, your example is an unfortunate one for your argument,"
+said Holmes, taking the paper and glancing his eye down it. "This
+is the Dundas separation case, and, as it happens, I was engaged
+in clearing up some small points in connection with it. The
+husband was a teetotaler, there was no other woman, and the
+conduct complained of was that he had drifted into the habit of
+winding up every meal by taking out his false teeth and hurling
+them at his wife, which, you will allow, is not an action likely
+to occur to the imagination of the average story-teller. Take a
+pinch of snuff, Doctor, and acknowledge that I have scored over
+you in your example."
+
+He held out his snuffbox of old gold, with a great amethyst in
+the centre of the lid. Its splendour was in such contrast to his
+homely ways and simple life that I could not help commenting upon
+it.
+
+"Ah," said he, "I forgot that I had not seen you for some weeks.
+It is a little souvenir from the King of Bohemia in return for my
+assistance in the case of the Irene Adler papers."
+
+"And the ring?" I asked, glancing at a remarkable brilliant which
+sparkled upon his finger.
+
+"It was from the reigning family of Holland, though the matter in
+which I served them was of such delicacy that I cannot confide it
+even to you, who have been good enough to chronicle one or two of
+my little problems."
+
+"And have you any on hand just now?" I asked with interest.
+
+"Some ten or twelve, but none which present any feature of
+interest. They are important, you understand, without being
+interesting. Indeed, I have found that it is usually in
+unimportant matters that there is a field for the observation,
+and for the quick analysis of cause and effect which gives the
+charm to an investigation. The larger crimes are apt to be the
+simpler, for the bigger the crime the more obvious, as a rule, is
+the motive. In these cases, save for one rather intricate matter
+which has been referred to me from Marseilles, there is nothing
+which presents any features of interest. It is possible, however,
+that I may have something better before very many minutes are
+over, for this is one of my clients, or I am much mistaken."
+
+He had risen from his chair and was standing between the parted
+blinds gazing down into the dull neutral-tinted London street.
+Looking over his shoulder, I saw that on the pavement opposite
+there stood a large woman with a heavy fur boa round her neck,
+and a large curling red feather in a broad-brimmed hat which was
+tilted in a coquettish Duchess of Devonshire fashion over her
+ear. From under this great panoply she peeped up in a nervous,
+hesitating fashion at our windows, while her body oscillated
+backward and forward, and her fingers fidgeted with her glove
+buttons. Suddenly, with a plunge, as of the swimmer who leaves
+the bank, she hurried across the road, and we heard the sharp
+clang of the bell.
+
+"I have seen those symptoms before," said Holmes, throwing his
+cigarette into the fire. "Oscillation upon the pavement always
+means an affaire de coeur. She would like advice, but is not sure
+that the matter is not too delicate for communication. And yet
+even here we may discriminate. When a woman has been seriously
+wronged by a man she no longer oscillates, and the usual symptom
+is a broken bell wire. Here we may take it that there is a love
+matter, but that the maiden is not so much angry as perplexed, or
+grieved. But here she comes in person to resolve our doubts."
+
+As he spoke there was a tap at the door, and the boy in buttons
+entered to announce Miss Mary Sutherland, while the lady herself
+loomed behind his small black figure like a full-sailed
+merchant-man behind a tiny pilot boat. Sherlock Holmes welcomed
+her with the easy courtesy for which he was remarkable, and,
+having closed the door and bowed her into an armchair, he looked
+her over in the minute and yet abstracted fashion which was
+peculiar to him.
+
+"Do you not find," he said, "that with your short sight it is a
+little trying to do so much typewriting?"
+
+"I did at first," she answered, "but now I know where the letters
+are without looking." Then, suddenly realising the full purport
+of his words, she gave a violent start and looked up, with fear
+and astonishment upon her broad, good-humoured face. "You've
+heard about me, Mr. Holmes," she cried, "else how could you know
+all that?"
+
+"Never mind," said Holmes, laughing; "it is my business to know
+things. Perhaps I have trained myself to see what others
+overlook. If not, why should you come to consult me?"
+
+"I came to you, sir, because I heard of you from Mrs. Etherege,
+whose husband you found so easy when the police and everyone had
+given him up for dead. Oh, Mr. Holmes, I wish you would do as
+much for me. I'm not rich, but still I have a hundred a year in
+my own right, besides the little that I make by the machine, and
+I would give it all to know what has become of Mr. Hosmer Angel."
+
+"Why did you come away to consult me in such a hurry?" asked
+Sherlock Holmes, with his finger-tips together and his eyes to
+the ceiling.
+
+Again a startled look came over the somewhat vacuous face of Miss
+Mary Sutherland. "Yes, I did bang out of the house," she said,
+"for it made me angry to see the easy way in which Mr.
+Windibank--that is, my father--took it all. He would not go to
+the police, and he would not go to you, and so at last, as he
+would do nothing and kept on saying that there was no harm done,
+it made me mad, and I just on with my things and came right away
+to you."
+
+"Your father," said Holmes, "your stepfather, surely, since the
+name is different."
+
+"Yes, my stepfather. I call him father, though it sounds funny,
+too, for he is only five years and two months older than myself."
+
+"And your mother is alive?"
+
+"Oh, yes, mother is alive and well. I wasn't best pleased, Mr.
+Holmes, when she married again so soon after father's death, and
+a man who was nearly fifteen years younger than herself. Father
+was a plumber in the Tottenham Court Road, and he left a tidy
+business behind him, which mother carried on with Mr. Hardy, the
+foreman; but when Mr. Windibank came he made her sell the
+business, for he was very superior, being a traveller in wines.
+They got 4700 pounds for the goodwill and interest, which wasn't
+near as much as father could have got if he had been alive."
+
+I had expected to see Sherlock Holmes impatient under this
+rambling and inconsequential narrative, but, on the contrary, he
+had listened with the greatest concentration of attention.
+
+"Your own little income," he asked, "does it come out of the
+business?"
+
+"Oh, no, sir. It is quite separate and was left me by my uncle
+Ned in Auckland. It is in New Zealand stock, paying 4 1/2 per
+cent. Two thousand five hundred pounds was the amount, but I can
+only touch the interest."
+
+"You interest me extremely," said Holmes. "And since you draw so
+large a sum as a hundred a year, with what you earn into the
+bargain, you no doubt travel a little and indulge yourself in
+every way. I believe that a single lady can get on very nicely
+upon an income of about 60 pounds."
+
+"I could do with much less than that, Mr. Holmes, but you
+understand that as long as I live at home I don't wish to be a
+burden to them, and so they have the use of the money just while
+I am staying with them. Of course, that is only just for the
+time. Mr. Windibank draws my interest every quarter and pays it
+over to mother, and I find that I can do pretty well with what I
+earn at typewriting. It brings me twopence a sheet, and I can
+often do from fifteen to twenty sheets in a day."
+
+"You have made your position very clear to me," said Holmes.
+"This is my friend, Dr. Watson, before whom you can speak as
+freely as before myself. Kindly tell us now all about your
+connection with Mr. Hosmer Angel."
+
+A flush stole over Miss Sutherland's face, and she picked
+nervously at the fringe of her jacket. "I met him first at the
+gasfitters' ball," she said. "They used to send father tickets
+when he was alive, and then afterwards they remembered us, and
+sent them to mother. Mr. Windibank did not wish us to go. He
+never did wish us to go anywhere. He would get quite mad if I
+wanted so much as to join a Sunday-school treat. But this time I
+was set on going, and I would go; for what right had he to
+prevent? He said the folk were not fit for us to know, when all
+father's friends were to be there. And he said that I had nothing
+fit to wear, when I had my purple plush that I had never so much
+as taken out of the drawer. At last, when nothing else would do,
+he went off to France upon the business of the firm, but we went,
+mother and I, with Mr. Hardy, who used to be our foreman, and it
+was there I met Mr. Hosmer Angel."
+
+"I suppose," said Holmes, "that when Mr. Windibank came back from
+France he was very annoyed at your having gone to the ball."
+
+"Oh, well, he was very good about it. He laughed, I remember, and
+shrugged his shoulders, and said there was no use denying
+anything to a woman, for she would have her way."
+
+"I see. Then at the gasfitters' ball you met, as I understand, a
+gentleman called Mr. Hosmer Angel."
+
+"Yes, sir. I met him that night, and he called next day to ask if
+we had got home all safe, and after that we met him--that is to
+say, Mr. Holmes, I met him twice for walks, but after that father
+came back again, and Mr. Hosmer Angel could not come to the house
+any more."
+
+"No?"
+
+"Well, you know father didn't like anything of the sort. He
+wouldn't have any visitors if he could help it, and he used to
+say that a woman should be happy in her own family circle. But
+then, as I used to say to mother, a woman wants her own circle to
+begin with, and I had not got mine yet."
+
+"But how about Mr. Hosmer Angel? Did he make no attempt to see
+you?"
+
+"Well, father was going off to France again in a week, and Hosmer
+wrote and said that it would be safer and better not to see each
+other until he had gone. We could write in the meantime, and he
+used to write every day. I took the letters in in the morning, so
+there was no need for father to know."
+
+"Were you engaged to the gentleman at this time?"
+
+"Oh, yes, Mr. Holmes. We were engaged after the first walk that
+we took. Hosmer--Mr. Angel--was a cashier in an office in
+Leadenhall Street--and--"
+
+"What office?"
+
+"That's the worst of it, Mr. Holmes, I don't know."
+
+"Where did he live, then?"
+
+"He slept on the premises."
+
+"And you don't know his address?"
+
+"No--except that it was Leadenhall Street."
+
+"Where did you address your letters, then?"
+
+"To the Leadenhall Street Post Office, to be left till called
+for. He said that if they were sent to the office he would be
+chaffed by all the other clerks about having letters from a lady,
+so I offered to typewrite them, like he did his, but he wouldn't
+have that, for he said that when I wrote them they seemed to come
+from me, but when they were typewritten he always felt that the
+machine had come between us. That will just show you how fond he
+was of me, Mr. Holmes, and the little things that he would think
+of."
+
+"It was most suggestive," said Holmes. "It has long been an axiom
+of mine that the little things are infinitely the most important.
+Can you remember any other little things about Mr. Hosmer Angel?"
+
+"He was a very shy man, Mr. Holmes. He would rather walk with me
+in the evening than in the daylight, for he said that he hated to
+be conspicuous. Very retiring and gentlemanly he was. Even his
+voice was gentle. He'd had the quinsy and swollen glands when he
+was young, he told me, and it had left him with a weak throat,
+and a hesitating, whispering fashion of speech. He was always
+well dressed, very neat and plain, but his eyes were weak, just
+as mine are, and he wore tinted glasses against the glare."
+
+"Well, and what happened when Mr. Windibank, your stepfather,
+returned to France?"
+
+"Mr. Hosmer Angel came to the house again and proposed that we
+should marry before father came back. He was in dreadful earnest
+and made me swear, with my hands on the Testament, that whatever
+happened I would always be true to him. Mother said he was quite
+right to make me swear, and that it was a sign of his passion.
+Mother was all in his favour from the first and was even fonder
+of him than I was. Then, when they talked of marrying within the
+week, I began to ask about father; but they both said never to
+mind about father, but just to tell him afterwards, and mother
+said she would make it all right with him. I didn't quite like
+that, Mr. Holmes. It seemed funny that I should ask his leave, as
+he was only a few years older than me; but I didn't want to do
+anything on the sly, so I wrote to father at Bordeaux, where the
+company has its French offices, but the letter came back to me on
+the very morning of the wedding."
+
+"It missed him, then?"
+
+"Yes, sir; for he had started to England just before it arrived."
+
+"Ha! that was unfortunate. Your wedding was arranged, then, for
+the Friday. Was it to be in church?"
+
+"Yes, sir, but very quietly. It was to be at St. Saviour's, near
+King's Cross, and we were to have breakfast afterwards at the St.
+Pancras Hotel. Hosmer came for us in a hansom, but as there were
+two of us he put us both into it and stepped himself into a
+four-wheeler, which happened to be the only other cab in the
+street. We got to the church first, and when the four-wheeler
+drove up we waited for him to step out, but he never did, and
+when the cabman got down from the box and looked there was no one
+there! The cabman said that he could not imagine what had become
+of him, for he had seen him get in with his own eyes. That was
+last Friday, Mr. Holmes, and I have never seen or heard anything
+since then to throw any light upon what became of him."
+
+"It seems to me that you have been very shamefully treated," said
+Holmes.
+
+"Oh, no, sir! He was too good and kind to leave me so. Why, all
+the morning he was saying to me that, whatever happened, I was to
+be true; and that even if something quite unforeseen occurred to
+separate us, I was always to remember that I was pledged to him,
+and that he would claim his pledge sooner or later. It seemed
+strange talk for a wedding-morning, but what has happened since
+gives a meaning to it."
+
+"Most certainly it does. Your own opinion is, then, that some
+unforeseen catastrophe has occurred to him?"
+
+"Yes, sir. I believe that he foresaw some danger, or else he
+would not have talked so. And then I think that what he foresaw
+happened."
+
+"But you have no notion as to what it could have been?"
+
+"None."
+
+"One more question. How did your mother take the matter?"
+
+"She was angry, and said that I was never to speak of the matter
+again."
+
+"And your father? Did you tell him?"
+
+"Yes; and he seemed to think, with me, that something had
+happened, and that I should hear of Hosmer again. As he said,
+what interest could anyone have in bringing me to the doors of
+the church, and then leaving me? Now, if he had borrowed my
+money, or if he had married me and got my money settled on him,
+there might be some reason, but Hosmer was very independent about
+money and never would look at a shilling of mine. And yet, what
+could have happened? And why could he not write? Oh, it drives me
+half-mad to think of it, and I can't sleep a wink at night." She
+pulled a little handkerchief out of her muff and began to sob
+heavily into it.
+
+"I shall glance into the case for you," said Holmes, rising, "and
+I have no doubt that we shall reach some definite result. Let the
+weight of the matter rest upon me now, and do not let your mind
+dwell upon it further. Above all, try to let Mr. Hosmer Angel
+vanish from your memory, as he has done from your life."
+
+"Then you don't think I'll see him again?"
+
+"I fear not."
+
+"Then what has happened to him?"
+
+"You will leave that question in my hands. I should like an
+accurate description of him and any letters of his which you can
+spare."
+
+"I advertised for him in last Saturday's Chronicle," said she.
+"Here is the slip and here are four letters from him."
+
+"Thank you. And your address?"
+
+"No. 31 Lyon Place, Camberwell."
+
+"Mr. Angel's address you never had, I understand. Where is your
+father's place of business?"
+
+"He travels for Westhouse & Marbank, the great claret importers
+of Fenchurch Street."
+
+"Thank you. You have made your statement very clearly. You will
+leave the papers here, and remember the advice which I have given
+you. Let the whole incident be a sealed book, and do not allow it
+to affect your life."
+
+"You are very kind, Mr. Holmes, but I cannot do that. I shall be
+true to Hosmer. He shall find me ready when he comes back."
+
+For all the preposterous hat and the vacuous face, there was
+something noble in the simple faith of our visitor which
+compelled our respect. She laid her little bundle of papers upon
+the table and went her way, with a promise to come again whenever
+she might be summoned.
+
+Sherlock Holmes sat silent for a few minutes with his fingertips
+still pressed together, his legs stretched out in front of him,
+and his gaze directed upward to the ceiling. Then he took down
+from the rack the old and oily clay pipe, which was to him as a
+counsellor, and, having lit it, he leaned back in his chair, with
+the thick blue cloud-wreaths spinning up from him, and a look of
+infinite languor in his face.
+
+"Quite an interesting study, that maiden," he observed. "I found
+her more interesting than her little problem, which, by the way,
+is rather a trite one. You will find parallel cases, if you
+consult my index, in Andover in '77, and there was something of
+the sort at The Hague last year. Old as is the idea, however,
+there were one or two details which were new to me. But the
+maiden herself was most instructive."
+
+"You appeared to read a good deal upon her which was quite
+invisible to me," I remarked.
+
+"Not invisible but unnoticed, Watson. You did not know where to
+look, and so you missed all that was important. I can never bring
+you to realise the importance of sleeves, the suggestiveness of
+thumb-nails, or the great issues that may hang from a boot-lace.
+Now, what did you gather from that woman's appearance? Describe
+it."
+
+"Well, she had a slate-coloured, broad-brimmed straw hat, with a
+feather of a brickish red. Her jacket was black, with black beads
+sewn upon it, and a fringe of little black jet ornaments. Her
+dress was brown, rather darker than coffee colour, with a little
+purple plush at the neck and sleeves. Her gloves were greyish and
+were worn through at the right forefinger. Her boots I didn't
+observe. She had small round, hanging gold earrings, and a
+general air of being fairly well-to-do in a vulgar, comfortable,
+easy-going way."
+
+Sherlock Holmes clapped his hands softly together and chuckled.
+
+"'Pon my word, Watson, you are coming along wonderfully. You have
+really done very well indeed. It is true that you have missed
+everything of importance, but you have hit upon the method, and
+you have a quick eye for colour. Never trust to general
+impressions, my boy, but concentrate yourself upon details. My
+first glance is always at a woman's sleeve. In a man it is
+perhaps better first to take the knee of the trouser. As you
+observe, this woman had plush upon her sleeves, which is a most
+useful material for showing traces. The double line a little
+above the wrist, where the typewritist presses against the table,
+was beautifully defined. The sewing-machine, of the hand type,
+leaves a similar mark, but only on the left arm, and on the side
+of it farthest from the thumb, instead of being right across the
+broadest part, as this was. I then glanced at her face, and,
+observing the dint of a pince-nez at either side of her nose, I
+ventured a remark upon short sight and typewriting, which seemed
+to surprise her."
+
+"It surprised me."
+
+"But, surely, it was obvious. I was then much surprised and
+interested on glancing down to observe that, though the boots
+which she was wearing were not unlike each other, they were
+really odd ones; the one having a slightly decorated toe-cap, and
+the other a plain one. One was buttoned only in the two lower
+buttons out of five, and the other at the first, third, and
+fifth. Now, when you see that a young lady, otherwise neatly
+dressed, has come away from home with odd boots, half-buttoned,
+it is no great deduction to say that she came away in a hurry."
+
+"And what else?" I asked, keenly interested, as I always was, by
+my friend's incisive reasoning.
+
+"I noted, in passing, that she had written a note before leaving
+home but after being fully dressed. You observed that her right
+glove was torn at the forefinger, but you did not apparently see
+that both glove and finger were stained with violet ink. She had
+written in a hurry and dipped her pen too deep. It must have been
+this morning, or the mark would not remain clear upon the finger.
+All this is amusing, though rather elementary, but I must go back
+to business, Watson. Would you mind reading me the advertised
+description of Mr. Hosmer Angel?"
+
+I held the little printed slip to the light.
+
+"Missing," it said, "on the morning of the fourteenth, a gentleman
+named Hosmer Angel. About five ft. seven in. in height;
+strongly built, sallow complexion, black hair, a little bald in
+the centre, bushy, black side-whiskers and moustache; tinted
+glasses, slight infirmity of speech. Was dressed, when last seen,
+in black frock-coat faced with silk, black waistcoat, gold Albert
+chain, and grey Harris tweed trousers, with brown gaiters over
+elastic-sided boots. Known to have been employed in an office in
+Leadenhall Street. Anybody bringing--"
+
+"That will do," said Holmes. "As to the letters," he continued,
+glancing over them, "they are very commonplace. Absolutely no
+clue in them to Mr. Angel, save that he quotes Balzac once. There
+is one remarkable point, however, which will no doubt strike
+you."
+
+"They are typewritten," I remarked.
+
+"Not only that, but the signature is typewritten. Look at the
+neat little 'Hosmer Angel' at the bottom. There is a date, you
+see, but no superscription except Leadenhall Street, which is
+rather vague. The point about the signature is very suggestive--in
+fact, we may call it conclusive."
+
+"Of what?"
+
+"My dear fellow, is it possible you do not see how strongly it
+bears upon the case?"
+
+"I cannot say that I do unless it were that he wished to be able
+to deny his signature if an action for breach of promise were
+instituted."
+
+"No, that was not the point. However, I shall write two letters,
+which should settle the matter. One is to a firm in the City, the
+other is to the young lady's stepfather, Mr. Windibank, asking
+him whether he could meet us here at six o'clock tomorrow
+evening. It is just as well that we should do business with the
+male relatives. And now, Doctor, we can do nothing until the
+answers to those letters come, so we may put our little problem
+upon the shelf for the interim."
+
+I had had so many reasons to believe in my friend's subtle powers
+of reasoning and extraordinary energy in action that I felt that
+he must have some solid grounds for the assured and easy
+demeanour with which he treated the singular mystery which he had
+been called upon to fathom. Once only had I known him to fail, in
+the case of the King of Bohemia and of the Irene Adler
+photograph; but when I looked back to the weird business of the
+Sign of Four, and the extraordinary circumstances connected with
+the Study in Scarlet, I felt that it would be a strange tangle
+indeed which he could not unravel.
+
+I left him then, still puffing at his black clay pipe, with the
+conviction that when I came again on the next evening I would
+find that he held in his hands all the clues which would lead up
+to the identity of the disappearing bridegroom of Miss Mary
+Sutherland.
+
+A professional case of great gravity was engaging my own
+attention at the time, and the whole of next day I was busy at
+the bedside of the sufferer. It was not until close upon six
+o'clock that I found myself free and was able to spring into a
+hansom and drive to Baker Street, half afraid that I might be too
+late to assist at the dénouement of the little mystery. I found
+Sherlock Holmes alone, however, half asleep, with his long, thin
+form curled up in the recesses of his armchair. A formidable
+array of bottles and test-tubes, with the pungent cleanly smell
+of hydrochloric acid, told me that he had spent his day in the
+chemical work which was so dear to him.
+
+"Well, have you solved it?" I asked as I entered.
+
+"Yes. It was the bisulphate of baryta."
+
+"No, no, the mystery!" I cried.
+
+"Oh, that! I thought of the salt that I have been working upon.
+There was never any mystery in the matter, though, as I said
+yesterday, some of the details are of interest. The only drawback
+is that there is no law, I fear, that can touch the scoundrel."
+
+"Who was he, then, and what was his object in deserting Miss
+Sutherland?"
+
+The question was hardly out of my mouth, and Holmes had not yet
+opened his lips to reply, when we heard a heavy footfall in the
+passage and a tap at the door.
+
+"This is the girl's stepfather, Mr. James Windibank," said
+Holmes. "He has written to me to say that he would be here at
+six. Come in!"
+
+The man who entered was a sturdy, middle-sized fellow, some
+thirty years of age, clean-shaven, and sallow-skinned, with a
+bland, insinuating manner, and a pair of wonderfully sharp and
+penetrating grey eyes. He shot a questioning glance at each of
+us, placed his shiny top-hat upon the sideboard, and with a
+slight bow sidled down into the nearest chair.
+
+"Good-evening, Mr. James Windibank," said Holmes. "I think that
+this typewritten letter is from you, in which you made an
+appointment with me for six o'clock?"
+
+"Yes, sir. I am afraid that I am a little late, but I am not
+quite my own master, you know. I am sorry that Miss Sutherland
+has troubled you about this little matter, for I think it is far
+better not to wash linen of the sort in public. It was quite
+against my wishes that she came, but she is a very excitable,
+impulsive girl, as you may have noticed, and she is not easily
+controlled when she has made up her mind on a point. Of course, I
+did not mind you so much, as you are not connected with the
+official police, but it is not pleasant to have a family
+misfortune like this noised abroad. Besides, it is a useless
+expense, for how could you possibly find this Hosmer Angel?"
+
+"On the contrary," said Holmes quietly; "I have every reason to
+believe that I will succeed in discovering Mr. Hosmer Angel."
+
+Mr. Windibank gave a violent start and dropped his gloves. "I am
+delighted to hear it," he said.
+
+"It is a curious thing," remarked Holmes, "that a typewriter has
+really quite as much individuality as a man's handwriting. Unless
+they are quite new, no two of them write exactly alike. Some
+letters get more worn than others, and some wear only on one
+side. Now, you remark in this note of yours, Mr. Windibank, that
+in every case there is some little slurring over of the 'e,' and
+a slight defect in the tail of the 'r.' There are fourteen other
+characteristics, but those are the more obvious."
+
+"We do all our correspondence with this machine at the office,
+and no doubt it is a little worn," our visitor answered, glancing
+keenly at Holmes with his bright little eyes.
+
+"And now I will show you what is really a very interesting study,
+Mr. Windibank," Holmes continued. "I think of writing another
+little monograph some of these days on the typewriter and its
+relation to crime. It is a subject to which I have devoted some
+little attention. I have here four letters which purport to come
+from the missing man. They are all typewritten. In each case, not
+only are the 'e's' slurred and the 'r's' tailless, but you will
+observe, if you care to use my magnifying lens, that the fourteen
+other characteristics to which I have alluded are there as well."
+
+Mr. Windibank sprang out of his chair and picked up his hat. "I
+cannot waste time over this sort of fantastic talk, Mr. Holmes,"
+he said. "If you can catch the man, catch him, and let me know
+when you have done it."
+
+"Certainly," said Holmes, stepping over and turning the key in
+the door. "I let you know, then, that I have caught him!"
+
+"What! where?" shouted Mr. Windibank, turning white to his lips
+and glancing about him like a rat in a trap.
+
+"Oh, it won't do--really it won't," said Holmes suavely. "There
+is no possible getting out of it, Mr. Windibank. It is quite too
+transparent, and it was a very bad compliment when you said that
+it was impossible for me to solve so simple a question. That's
+right! Sit down and let us talk it over."
+
+Our visitor collapsed into a chair, with a ghastly face and a
+glitter of moisture on his brow. "It--it's not actionable," he
+stammered.
+
+"I am very much afraid that it is not. But between ourselves,
+Windibank, it was as cruel and selfish and heartless a trick in a
+petty way as ever came before me. Now, let me just run over the
+course of events, and you will contradict me if I go wrong."
+
+The man sat huddled up in his chair, with his head sunk upon his
+breast, like one who is utterly crushed. Holmes stuck his feet up
+on the corner of the mantelpiece and, leaning back with his hands
+in his pockets, began talking, rather to himself, as it seemed,
+than to us.
+
+"The man married a woman very much older than himself for her
+money," said he, "and he enjoyed the use of the money of the
+daughter as long as she lived with them. It was a considerable
+sum, for people in their position, and the loss of it would have
+made a serious difference. It was worth an effort to preserve it.
+The daughter was of a good, amiable disposition, but affectionate
+and warm-hearted in her ways, so that it was evident that with
+her fair personal advantages, and her little income, she would
+not be allowed to remain single long. Now her marriage would
+mean, of course, the loss of a hundred a year, so what does her
+stepfather do to prevent it? He takes the obvious course of
+keeping her at home and forbidding her to seek the company of
+people of her own age. But soon he found that that would not
+answer forever. She became restive, insisted upon her rights, and
+finally announced her positive intention of going to a certain
+ball. What does her clever stepfather do then? He conceives an
+idea more creditable to his head than to his heart. With the
+connivance and assistance of his wife he disguised himself,
+covered those keen eyes with tinted glasses, masked the face with
+a moustache and a pair of bushy whiskers, sunk that clear voice
+into an insinuating whisper, and doubly secure on account of the
+girl's short sight, he appears as Mr. Hosmer Angel, and keeps off
+other lovers by making love himself."
+
+"It was only a joke at first," groaned our visitor. "We never
+thought that she would have been so carried away."
+
+"Very likely not. However that may be, the young lady was very
+decidedly carried away, and, having quite made up her mind that
+her stepfather was in France, the suspicion of treachery never
+for an instant entered her mind. She was flattered by the
+gentleman's attentions, and the effect was increased by the
+loudly expressed admiration of her mother. Then Mr. Angel began
+to call, for it was obvious that the matter should be pushed as
+far as it would go if a real effect were to be produced. There
+were meetings, and an engagement, which would finally secure the
+girl's affections from turning towards anyone else. But the
+deception could not be kept up forever. These pretended journeys
+to France were rather cumbrous. The thing to do was clearly to
+bring the business to an end in such a dramatic manner that it
+would leave a permanent impression upon the young lady's mind and
+prevent her from looking upon any other suitor for some time to
+come. Hence those vows of fidelity exacted upon a Testament, and
+hence also the allusions to a possibility of something happening
+on the very morning of the wedding. James Windibank wished Miss
+Sutherland to be so bound to Hosmer Angel, and so uncertain as to
+his fate, that for ten years to come, at any rate, she would not
+listen to another man. As far as the church door he brought her,
+and then, as he could go no farther, he conveniently vanished
+away by the old trick of stepping in at one door of a
+four-wheeler and out at the other. I think that was the chain of
+events, Mr. Windibank!"
+
+Our visitor had recovered something of his assurance while Holmes
+had been talking, and he rose from his chair now with a cold
+sneer upon his pale face.
+
+"It may be so, or it may not, Mr. Holmes," said he, "but if you
+are so very sharp you ought to be sharp enough to know that it is
+you who are breaking the law now, and not me. I have done nothing
+actionable from the first, but as long as you keep that door
+locked you lay yourself open to an action for assault and illegal
+constraint."
+
+"The law cannot, as you say, touch you," said Holmes, unlocking
+and throwing open the door, "yet there never was a man who
+deserved punishment more. If the young lady has a brother or a
+friend, he ought to lay a whip across your shoulders. By Jove!"
+he continued, flushing up at the sight of the bitter sneer upon
+the man's face, "it is not part of my duties to my client, but
+here's a hunting crop handy, and I think I shall just treat
+myself to--" He took two swift steps to the whip, but before he
+could grasp it there was a wild clatter of steps upon the stairs,
+the heavy hall door banged, and from the window we could see Mr.
+James Windibank running at the top of his speed down the road.
+
+"There's a cold-blooded scoundrel!" said Holmes, laughing, as he
+threw himself down into his chair once more. "That fellow will
+rise from crime to crime until he does something very bad, and
+ends on a gallows. The case has, in some respects, been not
+entirely devoid of interest."
+
+"I cannot now entirely see all the steps of your reasoning," I
+remarked.
+
+"Well, of course it was obvious from the first that this Mr.
+Hosmer Angel must have some strong object for his curious
+conduct, and it was equally clear that the only man who really
+profited by the incident, as far as we could see, was the
+stepfather. Then the fact that the two men were never together,
+but that the one always appeared when the other was away, was
+suggestive. So were the tinted spectacles and the curious voice,
+which both hinted at a disguise, as did the bushy whiskers. My
+suspicions were all confirmed by his peculiar action in
+typewriting his signature, which, of course, inferred that his
+handwriting was so familiar to her that she would recognise even
+the smallest sample of it. You see all these isolated facts,
+together with many minor ones, all pointed in the same
+direction."
+
+"And how did you verify them?"
+
+"Having once spotted my man, it was easy to get corroboration. I
+knew the firm for which this man worked. Having taken the printed
+description. I eliminated everything from it which could be the
+result of a disguise--the whiskers, the glasses, the voice, and I
+sent it to the firm, with a request that they would inform me
+whether it answered to the description of any of their
+travellers. I had already noticed the peculiarities of the
+typewriter, and I wrote to the man himself at his business
+address asking him if he would come here. As I expected, his
+reply was typewritten and revealed the same trivial but
+characteristic defects. The same post brought me a letter from
+Westhouse & Marbank, of Fenchurch Street, to say that the
+description tallied in every respect with that of their employé,
+James Windibank. Voilà tout!"
+
+"And Miss Sutherland?"
+
+"If I tell her she will not believe me. You may remember the old
+Persian saying, 'There is danger for him who taketh the tiger
+cub, and danger also for whoso snatches a delusion from a woman.'
+There is as much sense in Hafiz as in Horace, and as much
+knowledge of the world."
+
+
+
+ADVENTURE IV. THE BOSCOMBE VALLEY MYSTERY
+
+We were seated at breakfast one morning, my wife and I, when the
+maid brought in a telegram. It was from Sherlock Holmes and ran
+in this way:
+
+"Have you a couple of days to spare? Have just been wired for from
+the west of England in connection with Boscombe Valley tragedy.
+Shall be glad if you will come with me. Air and scenery perfect.
+Leave Paddington by the 11:15."
+
+"What do you say, dear?" said my wife, looking across at me.
+"Will you go?"
+
+"I really don't know what to say. I have a fairly long list at
+present."
+
+"Oh, Anstruther would do your work for you. You have been looking
+a little pale lately. I think that the change would do you good,
+and you are always so interested in Mr. Sherlock Holmes' cases."
+
+"I should be ungrateful if I were not, seeing what I gained
+through one of them," I answered. "But if I am to go, I must pack
+at once, for I have only half an hour."
+
+My experience of camp life in Afghanistan had at least had the
+effect of making me a prompt and ready traveller. My wants were
+few and simple, so that in less than the time stated I was in a
+cab with my valise, rattling away to Paddington Station. Sherlock
+Holmes was pacing up and down the platform, his tall, gaunt
+figure made even gaunter and taller by his long grey
+travelling-cloak and close-fitting cloth cap.
+
+"It is really very good of you to come, Watson," said he. "It
+makes a considerable difference to me, having someone with me on
+whom I can thoroughly rely. Local aid is always either worthless
+or else biassed. If you will keep the two corner seats I shall
+get the tickets."
+
+We had the carriage to ourselves save for an immense litter of
+papers which Holmes had brought with him. Among these he rummaged
+and read, with intervals of note-taking and of meditation, until
+we were past Reading. Then he suddenly rolled them all into a
+gigantic ball and tossed them up onto the rack.
+
+"Have you heard anything of the case?" he asked.
+
+"Not a word. I have not seen a paper for some days."
+
+"The London press has not had very full accounts. I have just
+been looking through all the recent papers in order to master the
+particulars. It seems, from what I gather, to be one of those
+simple cases which are so extremely difficult."
+
+"That sounds a little paradoxical."
+
+"But it is profoundly true. Singularity is almost invariably a
+clue. The more featureless and commonplace a crime is, the more
+difficult it is to bring it home. In this case, however, they
+have established a very serious case against the son of the
+murdered man."
+
+"It is a murder, then?"
+
+"Well, it is conjectured to be so. I shall take nothing for
+granted until I have the opportunity of looking personally into
+it. I will explain the state of things to you, as far as I have
+been able to understand it, in a very few words.
+
+"Boscombe Valley is a country district not very far from Ross, in
+Herefordshire. The largest landed proprietor in that part is a
+Mr. John Turner, who made his money in Australia and returned
+some years ago to the old country. One of the farms which he
+held, that of Hatherley, was let to Mr. Charles McCarthy, who was
+also an ex-Australian. The men had known each other in the
+colonies, so that it was not unnatural that when they came to
+settle down they should do so as near each other as possible.
+Turner was apparently the richer man, so McCarthy became his
+tenant but still remained, it seems, upon terms of perfect
+equality, as they were frequently together. McCarthy had one son,
+a lad of eighteen, and Turner had an only daughter of the same
+age, but neither of them had wives living. They appear to have
+avoided the society of the neighbouring English families and to
+have led retired lives, though both the McCarthys were fond of
+sport and were frequently seen at the race-meetings of the
+neighbourhood. McCarthy kept two servants--a man and a girl.
+Turner had a considerable household, some half-dozen at the
+least. That is as much as I have been able to gather about the
+families. Now for the facts.
+
+"On June 3rd, that is, on Monday last, McCarthy left his house at
+Hatherley about three in the afternoon and walked down to the
+Boscombe Pool, which is a small lake formed by the spreading out
+of the stream which runs down the Boscombe Valley. He had been
+out with his serving-man in the morning at Ross, and he had told
+the man that he must hurry, as he had an appointment of
+importance to keep at three. From that appointment he never came
+back alive.
+
+"From Hatherley Farm-house to the Boscombe Pool is a quarter of a
+mile, and two people saw him as he passed over this ground. One
+was an old woman, whose name is not mentioned, and the other was
+William Crowder, a game-keeper in the employ of Mr. Turner. Both
+these witnesses depose that Mr. McCarthy was walking alone. The
+game-keeper adds that within a few minutes of his seeing Mr.
+McCarthy pass he had seen his son, Mr. James McCarthy, going the
+same way with a gun under his arm. To the best of his belief, the
+father was actually in sight at the time, and the son was
+following him. He thought no more of the matter until he heard in
+the evening of the tragedy that had occurred.
+
+"The two McCarthys were seen after the time when William Crowder,
+the game-keeper, lost sight of them. The Boscombe Pool is thickly
+wooded round, with just a fringe of grass and of reeds round the
+edge. A girl of fourteen, Patience Moran, who is the daughter of
+the lodge-keeper of the Boscombe Valley estate, was in one of the
+woods picking flowers. She states that while she was there she
+saw, at the border of the wood and close by the lake, Mr.
+McCarthy and his son, and that they appeared to be having a
+violent quarrel. She heard Mr. McCarthy the elder using very
+strong language to his son, and she saw the latter raise up his
+hand as if to strike his father. She was so frightened by their
+violence that she ran away and told her mother when she reached
+home that she had left the two McCarthys quarrelling near
+Boscombe Pool, and that she was afraid that they were going to
+fight. She had hardly said the words when young Mr. McCarthy came
+running up to the lodge to say that he had found his father dead
+in the wood, and to ask for the help of the lodge-keeper. He was
+much excited, without either his gun or his hat, and his right
+hand and sleeve were observed to be stained with fresh blood. On
+following him they found the dead body stretched out upon the
+grass beside the pool. The head had been beaten in by repeated
+blows of some heavy and blunt weapon. The injuries were such as
+might very well have been inflicted by the butt-end of his son's
+gun, which was found lying on the grass within a few paces of the
+body. Under these circumstances the young man was instantly
+arrested, and a verdict of 'wilful murder' having been returned
+at the inquest on Tuesday, he was on Wednesday brought before the
+magistrates at Ross, who have referred the case to the next
+Assizes. Those are the main facts of the case as they came out
+before the coroner and the police-court."
+
+"I could hardly imagine a more damning case," I remarked. "If
+ever circumstantial evidence pointed to a criminal it does so
+here."
+
+"Circumstantial evidence is a very tricky thing," answered Holmes
+thoughtfully. "It may seem to point very straight to one thing,
+but if you shift your own point of view a little, you may find it
+pointing in an equally uncompromising manner to something
+entirely different. It must be confessed, however, that the case
+looks exceedingly grave against the young man, and it is very
+possible that he is indeed the culprit. There are several people
+in the neighbourhood, however, and among them Miss Turner, the
+daughter of the neighbouring landowner, who believe in his
+innocence, and who have retained Lestrade, whom you may recollect
+in connection with the Study in Scarlet, to work out the case in
+his interest. Lestrade, being rather puzzled, has referred the
+case to me, and hence it is that two middle-aged gentlemen are
+flying westward at fifty miles an hour instead of quietly
+digesting their breakfasts at home."
+
+"I am afraid," said I, "that the facts are so obvious that you
+will find little credit to be gained out of this case."
+
+"There is nothing more deceptive than an obvious fact," he
+answered, laughing. "Besides, we may chance to hit upon some
+other obvious facts which may have been by no means obvious to
+Mr. Lestrade. You know me too well to think that I am boasting
+when I say that I shall either confirm or destroy his theory by
+means which he is quite incapable of employing, or even of
+understanding. To take the first example to hand, I very clearly
+perceive that in your bedroom the window is upon the right-hand
+side, and yet I question whether Mr. Lestrade would have noted
+even so self-evident a thing as that."
+
+"How on earth--"
+
+"My dear fellow, I know you well. I know the military neatness
+which characterises you. You shave every morning, and in this
+season you shave by the sunlight; but since your shaving is less
+and less complete as we get farther back on the left side, until
+it becomes positively slovenly as we get round the angle of the
+jaw, it is surely very clear that that side is less illuminated
+than the other. I could not imagine a man of your habits looking
+at himself in an equal light and being satisfied with such a
+result. I only quote this as a trivial example of observation and
+inference. Therein lies my métier, and it is just possible that
+it may be of some service in the investigation which lies before
+us. There are one or two minor points which were brought out in
+the inquest, and which are worth considering."
+
+"What are they?"
+
+"It appears that his arrest did not take place at once, but after
+the return to Hatherley Farm. On the inspector of constabulary
+informing him that he was a prisoner, he remarked that he was not
+surprised to hear it, and that it was no more than his deserts.
+This observation of his had the natural effect of removing any
+traces of doubt which might have remained in the minds of the
+coroner's jury."
+
+"It was a confession," I ejaculated.
+
+"No, for it was followed by a protestation of innocence."
+
+"Coming on the top of such a damning series of events, it was at
+least a most suspicious remark."
+
+"On the contrary," said Holmes, "it is the brightest rift which I
+can at present see in the clouds. However innocent he might be,
+he could not be such an absolute imbecile as not to see that the
+circumstances were very black against him. Had he appeared
+surprised at his own arrest, or feigned indignation at it, I
+should have looked upon it as highly suspicious, because such
+surprise or anger would not be natural under the circumstances,
+and yet might appear to be the best policy to a scheming man. His
+frank acceptance of the situation marks him as either an innocent
+man, or else as a man of considerable self-restraint and
+firmness. As to his remark about his deserts, it was also not
+unnatural if you consider that he stood beside the dead body of
+his father, and that there is no doubt that he had that very day
+so far forgotten his filial duty as to bandy words with him, and
+even, according to the little girl whose evidence is so
+important, to raise his hand as if to strike him. The
+self-reproach and contrition which are displayed in his remark
+appear to me to be the signs of a healthy mind rather than of a
+guilty one."
+
+I shook my head. "Many men have been hanged on far slighter
+evidence," I remarked.
+
+"So they have. And many men have been wrongfully hanged."
+
+"What is the young man's own account of the matter?"
+
+"It is, I am afraid, not very encouraging to his supporters,
+though there are one or two points in it which are suggestive.
+You will find it here, and may read it for yourself."
+
+He picked out from his bundle a copy of the local Herefordshire
+paper, and having turned down the sheet he pointed out the
+paragraph in which the unfortunate young man had given his own
+statement of what had occurred. I settled myself down in the
+corner of the carriage and read it very carefully. It ran in this
+way:
+
+"Mr. James McCarthy, the only son of the deceased, was then called
+and gave evidence as follows: 'I had been away from home for
+three days at Bristol, and had only just returned upon the
+morning of last Monday, the 3rd. My father was absent from home at
+the time of my arrival, and I was informed by the maid that he
+had driven over to Ross with John Cobb, the groom. Shortly after
+my return I heard the wheels of his trap in the yard, and,
+looking out of my window, I saw him get out and walk rapidly out
+of the yard, though I was not aware in which direction he was
+going. I then took my gun and strolled out in the direction of
+the Boscombe Pool, with the intention of visiting the rabbit
+warren which is upon the other side. On my way I saw William
+Crowder, the game-keeper, as he had stated in his evidence; but
+he is mistaken in thinking that I was following my father. I had
+no idea that he was in front of me. When about a hundred yards
+from the pool I heard a cry of "Cooee!" which was a usual signal
+between my father and myself. I then hurried forward, and found
+him standing by the pool. He appeared to be much surprised at
+seeing me and asked me rather roughly what I was doing there. A
+conversation ensued which led to high words and almost to blows,
+for my father was a man of a very violent temper. Seeing that his
+passion was becoming ungovernable, I left him and returned
+towards Hatherley Farm. I had not gone more than 150 yards,
+however, when I heard a hideous outcry behind me, which caused me
+to run back again. I found my father expiring upon the ground,
+with his head terribly injured. I dropped my gun and held him in
+my arms, but he almost instantly expired. I knelt beside him for
+some minutes, and then made my way to Mr. Turner's lodge-keeper,
+his house being the nearest, to ask for assistance. I saw no one
+near my father when I returned, and I have no idea how he came by
+his injuries. He was not a popular man, being somewhat cold and
+forbidding in his manners, but he had, as far as I know, no
+active enemies. I know nothing further of the matter.'
+
+"The Coroner: Did your father make any statement to you before
+he died?
+
+"Witness: He mumbled a few words, but I could only catch some
+allusion to a rat.
+
+"The Coroner: What did you understand by that?
+
+"Witness: It conveyed no meaning to me. I thought that he was
+delirious.
+
+"The Coroner: What was the point upon which you and your father
+had this final quarrel?
+
+"Witness: I should prefer not to answer.
+
+"The Coroner: I am afraid that I must press it.
+
+"Witness: It is really impossible for me to tell you. I can
+assure you that it has nothing to do with the sad tragedy which
+followed.
+
+"The Coroner: That is for the court to decide. I need not point
+out to you that your refusal to answer will prejudice your case
+considerably in any future proceedings which may arise.
+
+"Witness: I must still refuse.
+
+"The Coroner: I understand that the cry of 'Cooee' was a common
+signal between you and your father?
+
+"Witness: It was.
+
+"The Coroner: How was it, then, that he uttered it before he saw
+you, and before he even knew that you had returned from Bristol?
+
+"Witness (with considerable confusion): I do not know.
+
+"A Juryman: Did you see nothing which aroused your suspicions
+when you returned on hearing the cry and found your father
+fatally injured?
+
+"Witness: Nothing definite.
+
+"The Coroner: What do you mean?
+
+"Witness: I was so disturbed and excited as I rushed out into
+the open, that I could think of nothing except of my father. Yet
+I have a vague impression that as I ran forward something lay
+upon the ground to the left of me. It seemed to me to be
+something grey in colour, a coat of some sort, or a plaid perhaps.
+When I rose from my father I looked round for it, but it was
+gone.
+
+"'Do you mean that it disappeared before you went for help?'
+
+"'Yes, it was gone.'
+
+"'You cannot say what it was?'
+
+"'No, I had a feeling something was there.'
+
+"'How far from the body?'
+
+"'A dozen yards or so.'
+
+"'And how far from the edge of the wood?'
+
+"'About the same.'
+
+"'Then if it was removed it was while you were within a dozen
+yards of it?'
+
+"'Yes, but with my back towards it.'
+
+"This concluded the examination of the witness."
+
+"I see," said I as I glanced down the column, "that the coroner
+in his concluding remarks was rather severe upon young McCarthy.
+He calls attention, and with reason, to the discrepancy about his
+father having signalled to him before seeing him, also to his
+refusal to give details of his conversation with his father, and
+his singular account of his father's dying words. They are all,
+as he remarks, very much against the son."
+
+Holmes laughed softly to himself and stretched himself out upon
+the cushioned seat. "Both you and the coroner have been at some
+pains," said he, "to single out the very strongest points in the
+young man's favour. Don't you see that you alternately give him
+credit for having too much imagination and too little? Too
+little, if he could not invent a cause of quarrel which would
+give him the sympathy of the jury; too much, if he evolved from
+his own inner consciousness anything so outré as a dying
+reference to a rat, and the incident of the vanishing cloth. No,
+sir, I shall approach this case from the point of view that what
+this young man says is true, and we shall see whither that
+hypothesis will lead us. And now here is my pocket Petrarch, and
+not another word shall I say of this case until we are on the
+scene of action. We lunch at Swindon, and I see that we shall be
+there in twenty minutes."
+
+It was nearly four o'clock when we at last, after passing through
+the beautiful Stroud Valley, and over the broad gleaming Severn,
+found ourselves at the pretty little country-town of Ross. A
+lean, ferret-like man, furtive and sly-looking, was waiting for
+us upon the platform. In spite of the light brown dustcoat and
+leather-leggings which he wore in deference to his rustic
+surroundings, I had no difficulty in recognising Lestrade, of
+Scotland Yard. With him we drove to the Hereford Arms where a
+room had already been engaged for us.
+
+"I have ordered a carriage," said Lestrade as we sat over a cup
+of tea. "I knew your energetic nature, and that you would not be
+happy until you had been on the scene of the crime."
+
+"It was very nice and complimentary of you," Holmes answered. "It
+is entirely a question of barometric pressure."
+
+Lestrade looked startled. "I do not quite follow," he said.
+
+"How is the glass? Twenty-nine, I see. No wind, and not a cloud
+in the sky. I have a caseful of cigarettes here which need
+smoking, and the sofa is very much superior to the usual country
+hotel abomination. I do not think that it is probable that I
+shall use the carriage to-night."
+
+Lestrade laughed indulgently. "You have, no doubt, already formed
+your conclusions from the newspapers," he said. "The case is as
+plain as a pikestaff, and the more one goes into it the plainer
+it becomes. Still, of course, one can't refuse a lady, and such a
+very positive one, too. She has heard of you, and would have your
+opinion, though I repeatedly told her that there was nothing
+which you could do which I had not already done. Why, bless my
+soul! here is her carriage at the door."
+
+He had hardly spoken before there rushed into the room one of the
+most lovely young women that I have ever seen in my life. Her
+violet eyes shining, her lips parted, a pink flush upon her
+cheeks, all thought of her natural reserve lost in her
+overpowering excitement and concern.
+
+"Oh, Mr. Sherlock Holmes!" she cried, glancing from one to the
+other of us, and finally, with a woman's quick intuition,
+fastening upon my companion, "I am so glad that you have come. I
+have driven down to tell you so. I know that James didn't do it.
+I know it, and I want you to start upon your work knowing it,
+too. Never let yourself doubt upon that point. We have known each
+other since we were little children, and I know his faults as no
+one else does; but he is too tender-hearted to hurt a fly. Such a
+charge is absurd to anyone who really knows him."
+
+"I hope we may clear him, Miss Turner," said Sherlock Holmes.
+"You may rely upon my doing all that I can."
+
+"But you have read the evidence. You have formed some conclusion?
+Do you not see some loophole, some flaw? Do you not yourself
+think that he is innocent?"
+
+"I think that it is very probable."
+
+"There, now!" she cried, throwing back her head and looking
+defiantly at Lestrade. "You hear! He gives me hopes."
+
+Lestrade shrugged his shoulders. "I am afraid that my colleague
+has been a little quick in forming his conclusions," he said.
+
+"But he is right. Oh! I know that he is right. James never did
+it. And about his quarrel with his father, I am sure that the
+reason why he would not speak about it to the coroner was because
+I was concerned in it."
+
+"In what way?" asked Holmes.
+
+"It is no time for me to hide anything. James and his father had
+many disagreements about me. Mr. McCarthy was very anxious that
+there should be a marriage between us. James and I have always
+loved each other as brother and sister; but of course he is young
+and has seen very little of life yet, and--and--well, he
+naturally did not wish to do anything like that yet. So there
+were quarrels, and this, I am sure, was one of them."
+
+"And your father?" asked Holmes. "Was he in favour of such a
+union?"
+
+"No, he was averse to it also. No one but Mr. McCarthy was in
+favour of it." A quick blush passed over her fresh young face as
+Holmes shot one of his keen, questioning glances at her.
+
+"Thank you for this information," said he. "May I see your father
+if I call to-morrow?"
+
+"I am afraid the doctor won't allow it."
+
+"The doctor?"
+
+"Yes, have you not heard? Poor father has never been strong for
+years back, but this has broken him down completely. He has taken
+to his bed, and Dr. Willows says that he is a wreck and that his
+nervous system is shattered. Mr. McCarthy was the only man alive
+who had known dad in the old days in Victoria."
+
+"Ha! In Victoria! That is important."
+
+"Yes, at the mines."
+
+"Quite so; at the gold-mines, where, as I understand, Mr. Turner
+made his money."
+
+"Yes, certainly."
+
+"Thank you, Miss Turner. You have been of material assistance to
+me."
+
+"You will tell me if you have any news to-morrow. No doubt you
+will go to the prison to see James. Oh, if you do, Mr. Holmes, do
+tell him that I know him to be innocent."
+
+"I will, Miss Turner."
+
+"I must go home now, for dad is very ill, and he misses me so if
+I leave him. Good-bye, and God help you in your undertaking." She
+hurried from the room as impulsively as she had entered, and we
+heard the wheels of her carriage rattle off down the street.
+
+"I am ashamed of you, Holmes," said Lestrade with dignity after a
+few minutes' silence. "Why should you raise up hopes which you
+are bound to disappoint? I am not over-tender of heart, but I
+call it cruel."
+
+"I think that I see my way to clearing James McCarthy," said
+Holmes. "Have you an order to see him in prison?"
+
+"Yes, but only for you and me."
+
+"Then I shall reconsider my resolution about going out. We have
+still time to take a train to Hereford and see him to-night?"
+
+"Ample."
+
+"Then let us do so. Watson, I fear that you will find it very
+slow, but I shall only be away a couple of hours."
+
+I walked down to the station with them, and then wandered through
+the streets of the little town, finally returning to the hotel,
+where I lay upon the sofa and tried to interest myself in a
+yellow-backed novel. The puny plot of the story was so thin,
+however, when compared to the deep mystery through which we were
+groping, and I found my attention wander so continually from the
+action to the fact, that I at last flung it across the room and
+gave myself up entirely to a consideration of the events of the
+day. Supposing that this unhappy young man's story were
+absolutely true, then what hellish thing, what absolutely
+unforeseen and extraordinary calamity could have occurred between
+the time when he parted from his father, and the moment when,
+drawn back by his screams, he rushed into the glade? It was
+something terrible and deadly. What could it be? Might not the
+nature of the injuries reveal something to my medical instincts?
+I rang the bell and called for the weekly county paper, which
+contained a verbatim account of the inquest. In the surgeon's
+deposition it was stated that the posterior third of the left
+parietal bone and the left half of the occipital bone had been
+shattered by a heavy blow from a blunt weapon. I marked the spot
+upon my own head. Clearly such a blow must have been struck from
+behind. That was to some extent in favour of the accused, as when
+seen quarrelling he was face to face with his father. Still, it
+did not go for very much, for the older man might have turned his
+back before the blow fell. Still, it might be worth while to call
+Holmes' attention to it. Then there was the peculiar dying
+reference to a rat. What could that mean? It could not be
+delirium. A man dying from a sudden blow does not commonly become
+delirious. No, it was more likely to be an attempt to explain how
+he met his fate. But what could it indicate? I cudgelled my
+brains to find some possible explanation. And then the incident
+of the grey cloth seen by young McCarthy. If that were true the
+murderer must have dropped some part of his dress, presumably his
+overcoat, in his flight, and must have had the hardihood to
+return and to carry it away at the instant when the son was
+kneeling with his back turned not a dozen paces off. What a
+tissue of mysteries and improbabilities the whole thing was! I
+did not wonder at Lestrade's opinion, and yet I had so much faith
+in Sherlock Holmes' insight that I could not lose hope as long
+as every fresh fact seemed to strengthen his conviction of young
+McCarthy's innocence.
+
+It was late before Sherlock Holmes returned. He came back alone,
+for Lestrade was staying in lodgings in the town.
+
+"The glass still keeps very high," he remarked as he sat down.
+"It is of importance that it should not rain before we are able
+to go over the ground. On the other hand, a man should be at his
+very best and keenest for such nice work as that, and I did not
+wish to do it when fagged by a long journey. I have seen young
+McCarthy."
+
+"And what did you learn from him?"
+
+"Nothing."
+
+"Could he throw no light?"
+
+"None at all. I was inclined to think at one time that he knew
+who had done it and was screening him or her, but I am convinced
+now that he is as puzzled as everyone else. He is not a very
+quick-witted youth, though comely to look at and, I should think,
+sound at heart."
+
+"I cannot admire his taste," I remarked, "if it is indeed a fact
+that he was averse to a marriage with so charming a young lady as
+this Miss Turner."
+
+"Ah, thereby hangs a rather painful tale. This fellow is madly,
+insanely, in love with her, but some two years ago, when he was
+only a lad, and before he really knew her, for she had been away
+five years at a boarding-school, what does the idiot do but get
+into the clutches of a barmaid in Bristol and marry her at a
+registry office? No one knows a word of the matter, but you can
+imagine how maddening it must be to him to be upbraided for not
+doing what he would give his very eyes to do, but what he knows
+to be absolutely impossible. It was sheer frenzy of this sort
+which made him throw his hands up into the air when his father,
+at their last interview, was goading him on to propose to Miss
+Turner. On the other hand, he had no means of supporting himself,
+and his father, who was by all accounts a very hard man, would
+have thrown him over utterly had he known the truth. It was with
+his barmaid wife that he had spent the last three days in
+Bristol, and his father did not know where he was. Mark that
+point. It is of importance. Good has come out of evil, however,
+for the barmaid, finding from the papers that he is in serious
+trouble and likely to be hanged, has thrown him over utterly and
+has written to him to say that she has a husband already in the
+Bermuda Dockyard, so that there is really no tie between them. I
+think that that bit of news has consoled young McCarthy for all
+that he has suffered."
+
+"But if he is innocent, who has done it?"
+
+"Ah! who? I would call your attention very particularly to two
+points. One is that the murdered man had an appointment with
+someone at the pool, and that the someone could not have been his
+son, for his son was away, and he did not know when he would
+return. The second is that the murdered man was heard to cry
+'Cooee!' before he knew that his son had returned. Those are the
+crucial points upon which the case depends. And now let us talk
+about George Meredith, if you please, and we shall leave all
+minor matters until to-morrow."
+
+There was no rain, as Holmes had foretold, and the morning broke
+bright and cloudless. At nine o'clock Lestrade called for us with
+the carriage, and we set off for Hatherley Farm and the Boscombe
+Pool.
+
+"There is serious news this morning," Lestrade observed. "It is
+said that Mr. Turner, of the Hall, is so ill that his life is
+despaired of."
+
+"An elderly man, I presume?" said Holmes.
+
+"About sixty; but his constitution has been shattered by his life
+abroad, and he has been in failing health for some time. This
+business has had a very bad effect upon him. He was an old friend
+of McCarthy's, and, I may add, a great benefactor to him, for I
+have learned that he gave him Hatherley Farm rent free."
+
+"Indeed! That is interesting," said Holmes.
+
+"Oh, yes! In a hundred other ways he has helped him. Everybody
+about here speaks of his kindness to him."
+
+"Really! Does it not strike you as a little singular that this
+McCarthy, who appears to have had little of his own, and to have
+been under such obligations to Turner, should still talk of
+marrying his son to Turner's daughter, who is, presumably,
+heiress to the estate, and that in such a very cocksure manner,
+as if it were merely a case of a proposal and all else would
+follow? It is the more strange, since we know that Turner himself
+was averse to the idea. The daughter told us as much. Do you not
+deduce something from that?"
+
+"We have got to the deductions and the inferences," said
+Lestrade, winking at me. "I find it hard enough to tackle facts,
+Holmes, without flying away after theories and fancies."
+
+"You are right," said Holmes demurely; "you do find it very hard
+to tackle the facts."
+
+"Anyhow, I have grasped one fact which you seem to find it
+difficult to get hold of," replied Lestrade with some warmth.
+
+"And that is--"
+
+"That McCarthy senior met his death from McCarthy junior and that
+all theories to the contrary are the merest moonshine."
+
+"Well, moonshine is a brighter thing than fog," said Holmes,
+laughing. "But I am very much mistaken if this is not Hatherley
+Farm upon the left."
+
+"Yes, that is it." It was a widespread, comfortable-looking
+building, two-storied, slate-roofed, with great yellow blotches
+of lichen upon the grey walls. The drawn blinds and the smokeless
+chimneys, however, gave it a stricken look, as though the weight
+of this horror still lay heavy upon it. We called at the door,
+when the maid, at Holmes' request, showed us the boots which her
+master wore at the time of his death, and also a pair of the
+son's, though not the pair which he had then had. Having measured
+these very carefully from seven or eight different points, Holmes
+desired to be led to the court-yard, from which we all followed
+the winding track which led to Boscombe Pool.
+
+Sherlock Holmes was transformed when he was hot upon such a scent
+as this. Men who had only known the quiet thinker and logician of
+Baker Street would have failed to recognise him. His face flushed
+and darkened. His brows were drawn into two hard black lines,
+while his eyes shone out from beneath them with a steely glitter.
+His face was bent downward, his shoulders bowed, his lips
+compressed, and the veins stood out like whipcord in his long,
+sinewy neck. His nostrils seemed to dilate with a purely animal
+lust for the chase, and his mind was so absolutely concentrated
+upon the matter before him that a question or remark fell
+unheeded upon his ears, or, at the most, only provoked a quick,
+impatient snarl in reply. Swiftly and silently he made his way
+along the track which ran through the meadows, and so by way of
+the woods to the Boscombe Pool. It was damp, marshy ground, as is
+all that district, and there were marks of many feet, both upon
+the path and amid the short grass which bounded it on either
+side. Sometimes Holmes would hurry on, sometimes stop dead, and
+once he made quite a little detour into the meadow. Lestrade and
+I walked behind him, the detective indifferent and contemptuous,
+while I watched my friend with the interest which sprang from the
+conviction that every one of his actions was directed towards a
+definite end.
+
+The Boscombe Pool, which is a little reed-girt sheet of water
+some fifty yards across, is situated at the boundary between the
+Hatherley Farm and the private park of the wealthy Mr. Turner.
+Above the woods which lined it upon the farther side we could see
+the red, jutting pinnacles which marked the site of the rich
+landowner's dwelling. On the Hatherley side of the pool the woods
+grew very thick, and there was a narrow belt of sodden grass
+twenty paces across between the edge of the trees and the reeds
+which lined the lake. Lestrade showed us the exact spot at which
+the body had been found, and, indeed, so moist was the ground,
+that I could plainly see the traces which had been left by the
+fall of the stricken man. To Holmes, as I could see by his eager
+face and peering eyes, very many other things were to be read
+upon the trampled grass. He ran round, like a dog who is picking
+up a scent, and then turned upon my companion.
+
+"What did you go into the pool for?" he asked.
+
+"I fished about with a rake. I thought there might be some weapon
+or other trace. But how on earth--"
+
+"Oh, tut, tut! I have no time! That left foot of yours with its
+inward twist is all over the place. A mole could trace it, and
+there it vanishes among the reeds. Oh, how simple it would all
+have been had I been here before they came like a herd of buffalo
+and wallowed all over it. Here is where the party with the
+lodge-keeper came, and they have covered all tracks for six or
+eight feet round the body. But here are three separate tracks of
+the same feet." He drew out a lens and lay down upon his
+waterproof to have a better view, talking all the time rather to
+himself than to us. "These are young McCarthy's feet. Twice he
+was walking, and once he ran swiftly, so that the soles are
+deeply marked and the heels hardly visible. That bears out his
+story. He ran when he saw his father on the ground. Then here are
+the father's feet as he paced up and down. What is this, then? It
+is the butt-end of the gun as the son stood listening. And this?
+Ha, ha! What have we here? Tiptoes! tiptoes! Square, too, quite
+unusual boots! They come, they go, they come again--of course
+that was for the cloak. Now where did they come from?" He ran up
+and down, sometimes losing, sometimes finding the track until we
+were well within the edge of the wood and under the shadow of a
+great beech, the largest tree in the neighbourhood. Holmes traced
+his way to the farther side of this and lay down once more upon
+his face with a little cry of satisfaction. For a long time he
+remained there, turning over the leaves and dried sticks,
+gathering up what seemed to me to be dust into an envelope and
+examining with his lens not only the ground but even the bark of
+the tree as far as he could reach. A jagged stone was lying among
+the moss, and this also he carefully examined and retained. Then
+he followed a pathway through the wood until he came to the
+highroad, where all traces were lost.
+
+"It has been a case of considerable interest," he remarked,
+returning to his natural manner. "I fancy that this grey house on
+the right must be the lodge. I think that I will go in and have a
+word with Moran, and perhaps write a little note. Having done
+that, we may drive back to our luncheon. You may walk to the cab,
+and I shall be with you presently."
+
+It was about ten minutes before we regained our cab and drove
+back into Ross, Holmes still carrying with him the stone which he
+had picked up in the wood.
+
+"This may interest you, Lestrade," he remarked, holding it out.
+"The murder was done with it."
+
+"I see no marks."
+
+"There are none."
+
+"How do you know, then?"
+
+"The grass was growing under it. It had only lain there a few
+days. There was no sign of a place whence it had been taken. It
+corresponds with the injuries. There is no sign of any other
+weapon."
+
+"And the murderer?"
+
+"Is a tall man, left-handed, limps with the right leg, wears
+thick-soled shooting-boots and a grey cloak, smokes Indian
+cigars, uses a cigar-holder, and carries a blunt pen-knife in his
+pocket. There are several other indications, but these may be
+enough to aid us in our search."
+
+Lestrade laughed. "I am afraid that I am still a sceptic," he
+said. "Theories are all very well, but we have to deal with a
+hard-headed British jury."
+
+"Nous verrons," answered Holmes calmly. "You work your own
+method, and I shall work mine. I shall be busy this afternoon,
+and shall probably return to London by the evening train."
+
+"And leave your case unfinished?"
+
+"No, finished."
+
+"But the mystery?"
+
+"It is solved."
+
+"Who was the criminal, then?"
+
+"The gentleman I describe."
+
+"But who is he?"
+
+"Surely it would not be difficult to find out. This is not such a
+populous neighbourhood."
+
+Lestrade shrugged his shoulders. "I am a practical man," he said,
+"and I really cannot undertake to go about the country looking
+for a left-handed gentleman with a game leg. I should become the
+laughing-stock of Scotland Yard."
+
+"All right," said Holmes quietly. "I have given you the chance.
+Here are your lodgings. Good-bye. I shall drop you a line before
+I leave."
+
+Having left Lestrade at his rooms, we drove to our hotel, where
+we found lunch upon the table. Holmes was silent and buried in
+thought with a pained expression upon his face, as one who finds
+himself in a perplexing position.
+
+"Look here, Watson," he said when the cloth was cleared "just sit
+down in this chair and let me preach to you for a little. I don't
+know quite what to do, and I should value your advice. Light a
+cigar and let me expound."
+
+ "Pray do so."
+
+"Well, now, in considering this case there are two points about
+young McCarthy's narrative which struck us both instantly,
+although they impressed me in his favour and you against him. One
+was the fact that his father should, according to his account,
+cry 'Cooee!' before seeing him. The other was his singular dying
+reference to a rat. He mumbled several words, you understand, but
+that was all that caught the son's ear. Now from this double
+point our research must commence, and we will begin it by
+presuming that what the lad says is absolutely true."
+
+"What of this 'Cooee!' then?"
+
+"Well, obviously it could not have been meant for the son. The
+son, as far as he knew, was in Bristol. It was mere chance that
+he was within earshot. The 'Cooee!' was meant to attract the
+attention of whoever it was that he had the appointment with. But
+'Cooee' is a distinctly Australian cry, and one which is used
+between Australians. There is a strong presumption that the
+person whom McCarthy expected to meet him at Boscombe Pool was
+someone who had been in Australia."
+
+"What of the rat, then?"
+
+Sherlock Holmes took a folded paper from his pocket and flattened
+it out on the table. "This is a map of the Colony of Victoria,"
+he said. "I wired to Bristol for it last night." He put his hand
+over part of the map. "What do you read?"
+
+"ARAT," I read.
+
+"And now?" He raised his hand.
+
+"BALLARAT."
+
+"Quite so. That was the word the man uttered, and of which his
+son only caught the last two syllables. He was trying to utter
+the name of his murderer. So and so, of Ballarat."
+
+"It is wonderful!" I exclaimed.
+
+"It is obvious. And now, you see, I had narrowed the field down
+considerably. The possession of a grey garment was a third point
+which, granting the son's statement to be correct, was a
+certainty. We have come now out of mere vagueness to the definite
+conception of an Australian from Ballarat with a grey cloak."
+
+"Certainly."
+
+"And one who was at home in the district, for the pool can only
+be approached by the farm or by the estate, where strangers could
+hardly wander."
+
+"Quite so."
+
+"Then comes our expedition of to-day. By an examination of the
+ground I gained the trifling details which I gave to that
+imbecile Lestrade, as to the personality of the criminal."
+
+"But how did you gain them?"
+
+"You know my method. It is founded upon the observation of
+trifles."
+
+"His height I know that you might roughly judge from the length
+of his stride. His boots, too, might be told from their traces."
+
+"Yes, they were peculiar boots."
+
+"But his lameness?"
+
+"The impression of his right foot was always less distinct than
+his left. He put less weight upon it. Why? Because he limped--he
+was lame."
+
+"But his left-handedness."
+
+"You were yourself struck by the nature of the injury as recorded
+by the surgeon at the inquest. The blow was struck from
+immediately behind, and yet was upon the left side. Now, how can
+that be unless it were by a left-handed man? He had stood behind
+that tree during the interview between the father and son. He had
+even smoked there. I found the ash of a cigar, which my special
+knowledge of tobacco ashes enables me to pronounce as an Indian
+cigar. I have, as you know, devoted some attention to this, and
+written a little monograph on the ashes of 140 different
+varieties of pipe, cigar, and cigarette tobacco. Having found the
+ash, I then looked round and discovered the stump among the moss
+where he had tossed it. It was an Indian cigar, of the variety
+which are rolled in Rotterdam."
+
+"And the cigar-holder?"
+
+"I could see that the end had not been in his mouth. Therefore he
+used a holder. The tip had been cut off, not bitten off, but the
+cut was not a clean one, so I deduced a blunt pen-knife."
+
+"Holmes," I said, "you have drawn a net round this man from which
+he cannot escape, and you have saved an innocent human life as
+truly as if you had cut the cord which was hanging him. I see the
+direction in which all this points. The culprit is--"
+
+"Mr. John Turner," cried the hotel waiter, opening the door of
+our sitting-room, and ushering in a visitor.
+
+The man who entered was a strange and impressive figure. His
+slow, limping step and bowed shoulders gave the appearance of
+decrepitude, and yet his hard, deep-lined, craggy features, and
+his enormous limbs showed that he was possessed of unusual
+strength of body and of character. His tangled beard, grizzled
+hair, and outstanding, drooping eyebrows combined to give an air
+of dignity and power to his appearance, but his face was of an
+ashen white, while his lips and the corners of his nostrils were
+tinged with a shade of blue. It was clear to me at a glance that
+he was in the grip of some deadly and chronic disease.
+
+"Pray sit down on the sofa," said Holmes gently. "You had my
+note?"
+
+"Yes, the lodge-keeper brought it up. You said that you wished to
+see me here to avoid scandal."
+
+"I thought people would talk if I went to the Hall."
+
+"And why did you wish to see me?" He looked across at my
+companion with despair in his weary eyes, as though his question
+was already answered.
+
+"Yes," said Holmes, answering the look rather than the words. "It
+is so. I know all about McCarthy."
+
+The old man sank his face in his hands. "God help me!" he cried.
+"But I would not have let the young man come to harm. I give you
+my word that I would have spoken out if it went against him at
+the Assizes."
+
+"I am glad to hear you say so," said Holmes gravely.
+
+"I would have spoken now had it not been for my dear girl. It
+would break her heart--it will break her heart when she hears
+that I am arrested."
+
+"It may not come to that," said Holmes.
+
+"What?"
+
+"I am no official agent. I understand that it was your daughter
+who required my presence here, and I am acting in her interests.
+Young McCarthy must be got off, however."
+
+"I am a dying man," said old Turner. "I have had diabetes for
+years. My doctor says it is a question whether I shall live a
+month. Yet I would rather die under my own roof than in a gaol."
+
+Holmes rose and sat down at the table with his pen in his hand
+and a bundle of paper before him. "Just tell us the truth," he
+said. "I shall jot down the facts. You will sign it, and Watson
+here can witness it. Then I could produce your confession at the
+last extremity to save young McCarthy. I promise you that I shall
+not use it unless it is absolutely needed."
+
+"It's as well," said the old man; "it's a question whether I
+shall live to the Assizes, so it matters little to me, but I
+should wish to spare Alice the shock. And now I will make the
+thing clear to you; it has been a long time in the acting, but
+will not take me long to tell.
+
+"You didn't know this dead man, McCarthy. He was a devil
+incarnate. I tell you that. God keep you out of the clutches of
+such a man as he. His grip has been upon me these twenty years,
+and he has blasted my life. I'll tell you first how I came to be
+in his power.
+
+"It was in the early '60's at the diggings. I was a young chap
+then, hot-blooded and reckless, ready to turn my hand at
+anything; I got among bad companions, took to drink, had no luck
+with my claim, took to the bush, and in a word became what you
+would call over here a highway robber. There were six of us, and
+we had a wild, free life of it, sticking up a station from time
+to time, or stopping the wagons on the road to the diggings.
+Black Jack of Ballarat was the name I went under, and our party
+is still remembered in the colony as the Ballarat Gang.
+
+"One day a gold convoy came down from Ballarat to Melbourne, and
+we lay in wait for it and attacked it. There were six troopers
+and six of us, so it was a close thing, but we emptied four of
+their saddles at the first volley. Three of our boys were killed,
+however, before we got the swag. I put my pistol to the head of
+the wagon-driver, who was this very man McCarthy. I wish to the
+Lord that I had shot him then, but I spared him, though I saw his
+wicked little eyes fixed on my face, as though to remember every
+feature. We got away with the gold, became wealthy men, and made
+our way over to England without being suspected. There I parted
+from my old pals and determined to settle down to a quiet and
+respectable life. I bought this estate, which chanced to be in
+the market, and I set myself to do a little good with my money,
+to make up for the way in which I had earned it. I married, too,
+and though my wife died young she left me my dear little Alice.
+Even when she was just a baby her wee hand seemed to lead me down
+the right path as nothing else had ever done. In a word, I turned
+over a new leaf and did my best to make up for the past. All was
+going well when McCarthy laid his grip upon me.
+
+"I had gone up to town about an investment, and I met him in
+Regent Street with hardly a coat to his back or a boot to his
+foot.
+
+"'Here we are, Jack,' says he, touching me on the arm; 'we'll be
+as good as a family to you. There's two of us, me and my son, and
+you can have the keeping of us. If you don't--it's a fine,
+law-abiding country is England, and there's always a policeman
+within hail.'
+
+"Well, down they came to the west country, there was no shaking
+them off, and there they have lived rent free on my best land
+ever since. There was no rest for me, no peace, no forgetfulness;
+turn where I would, there was his cunning, grinning face at my
+elbow. It grew worse as Alice grew up, for he soon saw I was more
+afraid of her knowing my past than of the police. Whatever he
+wanted he must have, and whatever it was I gave him without
+question, land, money, houses, until at last he asked a thing
+which I could not give. He asked for Alice.
+
+"His son, you see, had grown up, and so had my girl, and as I was
+known to be in weak health, it seemed a fine stroke to him that
+his lad should step into the whole property. But there I was
+firm. I would not have his cursed stock mixed with mine; not that
+I had any dislike to the lad, but his blood was in him, and that
+was enough. I stood firm. McCarthy threatened. I braved him to do
+his worst. We were to meet at the pool midway between our houses
+to talk it over.
+
+"When I went down there I found him talking with his son, so I
+smoked a cigar and waited behind a tree until he should be alone.
+But as I listened to his talk all that was black and bitter in
+me seemed to come uppermost. He was urging his son to marry my
+daughter with as little regard for what she might think as if she
+were a slut from off the streets. It drove me mad to think that I
+and all that I held most dear should be in the power of such a
+man as this. Could I not snap the bond? I was already a dying and
+a desperate man. Though clear of mind and fairly strong of limb,
+I knew that my own fate was sealed. But my memory and my girl!
+Both could be saved if I could but silence that foul tongue. I
+did it, Mr. Holmes. I would do it again. Deeply as I have sinned,
+I have led a life of martyrdom to atone for it. But that my girl
+should be entangled in the same meshes which held me was more
+than I could suffer. I struck him down with no more compunction
+than if he had been some foul and venomous beast. His cry brought
+back his son; but I had gained the cover of the wood, though I
+was forced to go back to fetch the cloak which I had dropped in
+my flight. That is the true story, gentlemen, of all that
+occurred."
+
+"Well, it is not for me to judge you," said Holmes as the old man
+signed the statement which had been drawn out. "I pray that we
+may never be exposed to such a temptation."
+
+"I pray not, sir. And what do you intend to do?"
+
+"In view of your health, nothing. You are yourself aware that you
+will soon have to answer for your deed at a higher court than the
+Assizes. I will keep your confession, and if McCarthy is
+condemned I shall be forced to use it. If not, it shall never be
+seen by mortal eye; and your secret, whether you be alive or
+dead, shall be safe with us."
+
+"Farewell, then," said the old man solemnly. "Your own deathbeds,
+when they come, will be the easier for the thought of the peace
+which you have given to mine." Tottering and shaking in all his
+giant frame, he stumbled slowly from the room.
+
+"God help us!" said Holmes after a long silence. "Why does fate
+play such tricks with poor, helpless worms? I never hear of such
+a case as this that I do not think of Baxter's words, and say,
+'There, but for the grace of God, goes Sherlock Holmes.'"
+
+James McCarthy was acquitted at the Assizes on the strength of a
+number of objections which had been drawn out by Holmes and
+submitted to the defending counsel. Old Turner lived for seven
+months after our interview, but he is now dead; and there is
+every prospect that the son and daughter may come to live happily
+together in ignorance of the black cloud which rests upon their
+past.
+
+
+
+ADVENTURE V. THE FIVE ORANGE PIPS
+
+When I glance over my notes and records of the Sherlock Holmes
+cases between the years '82 and '90, I am faced by so many which
+present strange and interesting features that it is no easy
+matter to know which to choose and which to leave. Some, however,
+have already gained publicity through the papers, and others have
+not offered a field for those peculiar qualities which my friend
+possessed in so high a degree, and which it is the object of
+these papers to illustrate. Some, too, have baffled his
+analytical skill, and would be, as narratives, beginnings without
+an ending, while others have been but partially cleared up, and
+have their explanations founded rather upon conjecture and
+surmise than on that absolute logical proof which was so dear to
+him. There is, however, one of these last which was so remarkable
+in its details and so startling in its results that I am tempted
+to give some account of it in spite of the fact that there are
+points in connection with it which never have been, and probably
+never will be, entirely cleared up.
+
+The year '87 furnished us with a long series of cases of greater
+or less interest, of which I retain the records. Among my
+headings under this one twelve months I find an account of the
+adventure of the Paradol Chamber, of the Amateur Mendicant
+Society, who held a luxurious club in the lower vault of a
+furniture warehouse, of the facts connected with the loss of the
+British barque "Sophy Anderson", of the singular adventures of the
+Grice Patersons in the island of Uffa, and finally of the
+Camberwell poisoning case. In the latter, as may be remembered,
+Sherlock Holmes was able, by winding up the dead man's watch, to
+prove that it had been wound up two hours before, and that
+therefore the deceased had gone to bed within that time--a
+deduction which was of the greatest importance in clearing up the
+case. All these I may sketch out at some future date, but none of
+them present such singular features as the strange train of
+circumstances which I have now taken up my pen to describe.
+
+It was in the latter days of September, and the equinoctial gales
+had set in with exceptional violence. All day the wind had
+screamed and the rain had beaten against the windows, so that
+even here in the heart of great, hand-made London we were forced
+to raise our minds for the instant from the routine of life and
+to recognise the presence of those great elemental forces which
+shriek at mankind through the bars of his civilisation, like
+untamed beasts in a cage. As evening drew in, the storm grew
+higher and louder, and the wind cried and sobbed like a child in
+the chimney. Sherlock Holmes sat moodily at one side of the
+fireplace cross-indexing his records of crime, while I at the
+other was deep in one of Clark Russell's fine sea-stories until
+the howl of the gale from without seemed to blend with the text,
+and the splash of the rain to lengthen out into the long swash of
+the sea waves. My wife was on a visit to her mother's, and for a
+few days I was a dweller once more in my old quarters at Baker
+Street.
+
+"Why," said I, glancing up at my companion, "that was surely the
+bell. Who could come to-night? Some friend of yours, perhaps?"
+
+"Except yourself I have none," he answered. "I do not encourage
+visitors."
+
+"A client, then?"
+
+"If so, it is a serious case. Nothing less would bring a man out
+on such a day and at such an hour. But I take it that it is more
+likely to be some crony of the landlady's."
+
+Sherlock Holmes was wrong in his conjecture, however, for there
+came a step in the passage and a tapping at the door. He
+stretched out his long arm to turn the lamp away from himself and
+towards the vacant chair upon which a newcomer must sit.
+
+"Come in!" said he.
+
+The man who entered was young, some two-and-twenty at the
+outside, well-groomed and trimly clad, with something of
+refinement and delicacy in his bearing. The streaming umbrella
+which he held in his hand, and his long shining waterproof told
+of the fierce weather through which he had come. He looked about
+him anxiously in the glare of the lamp, and I could see that his
+face was pale and his eyes heavy, like those of a man who is
+weighed down with some great anxiety.
+
+"I owe you an apology," he said, raising his golden pince-nez to
+his eyes. "I trust that I am not intruding. I fear that I have
+brought some traces of the storm and rain into your snug
+chamber."
+
+"Give me your coat and umbrella," said Holmes. "They may rest
+here on the hook and will be dry presently. You have come up from
+the south-west, I see."
+
+"Yes, from Horsham."
+
+"That clay and chalk mixture which I see upon your toe caps is
+quite distinctive."
+
+"I have come for advice."
+
+"That is easily got."
+
+"And help."
+
+"That is not always so easy."
+
+"I have heard of you, Mr. Holmes. I heard from Major Prendergast
+how you saved him in the Tankerville Club scandal."
+
+"Ah, of course. He was wrongfully accused of cheating at cards."
+
+"He said that you could solve anything."
+
+"He said too much."
+
+"That you are never beaten."
+
+"I have been beaten four times--three times by men, and once by a
+woman."
+
+"But what is that compared with the number of your successes?"
+
+"It is true that I have been generally successful."
+
+"Then you may be so with me."
+
+"I beg that you will draw your chair up to the fire and favour me
+with some details as to your case."
+
+"It is no ordinary one."
+
+"None of those which come to me are. I am the last court of
+appeal."
+
+"And yet I question, sir, whether, in all your experience, you
+have ever listened to a more mysterious and inexplicable chain of
+events than those which have happened in my own family."
+
+"You fill me with interest," said Holmes. "Pray give us the
+essential facts from the commencement, and I can afterwards
+question you as to those details which seem to me to be most
+important."
+
+The young man pulled his chair up and pushed his wet feet out
+towards the blaze.
+
+"My name," said he, "is John Openshaw, but my own affairs have,
+as far as I can understand, little to do with this awful
+business. It is a hereditary matter; so in order to give you an
+idea of the facts, I must go back to the commencement of the
+affair.
+
+"You must know that my grandfather had two sons--my uncle Elias
+and my father Joseph. My father had a small factory at Coventry,
+which he enlarged at the time of the invention of bicycling. He
+was a patentee of the Openshaw unbreakable tire, and his business
+met with such success that he was able to sell it and to retire
+upon a handsome competence.
+
+"My uncle Elias emigrated to America when he was a young man and
+became a planter in Florida, where he was reported to have done
+very well. At the time of the war he fought in Jackson's army,
+and afterwards under Hood, where he rose to be a colonel. When
+Lee laid down his arms my uncle returned to his plantation, where
+he remained for three or four years. About 1869 or 1870 he came
+back to Europe and took a small estate in Sussex, near Horsham.
+He had made a very considerable fortune in the States, and his
+reason for leaving them was his aversion to the negroes, and his
+dislike of the Republican policy in extending the franchise to
+them. He was a singular man, fierce and quick-tempered, very
+foul-mouthed when he was angry, and of a most retiring
+disposition. During all the years that he lived at Horsham, I
+doubt if ever he set foot in the town. He had a garden and two or
+three fields round his house, and there he would take his
+exercise, though very often for weeks on end he would never leave
+his room. He drank a great deal of brandy and smoked very
+heavily, but he would see no society and did not want any
+friends, not even his own brother.
+
+"He didn't mind me; in fact, he took a fancy to me, for at the
+time when he saw me first I was a youngster of twelve or so. This
+would be in the year 1878, after he had been eight or nine years
+in England. He begged my father to let me live with him and he
+was very kind to me in his way. When he was sober he used to be
+fond of playing backgammon and draughts with me, and he would
+make me his representative both with the servants and with the
+tradespeople, so that by the time that I was sixteen I was quite
+master of the house. I kept all the keys and could go where I
+liked and do what I liked, so long as I did not disturb him in
+his privacy. There was one singular exception, however, for he
+had a single room, a lumber-room up among the attics, which was
+invariably locked, and which he would never permit either me or
+anyone else to enter. With a boy's curiosity I have peeped
+through the keyhole, but I was never able to see more than such a
+collection of old trunks and bundles as would be expected in such
+a room.
+
+"One day--it was in March, 1883--a letter with a foreign stamp
+lay upon the table in front of the colonel's plate. It was not a
+common thing for him to receive letters, for his bills were all
+paid in ready money, and he had no friends of any sort. 'From
+India!' said he as he took it up, 'Pondicherry postmark! What can
+this be?' Opening it hurriedly, out there jumped five little
+dried orange pips, which pattered down upon his plate. I began to
+laugh at this, but the laugh was struck from my lips at the sight
+of his face. His lip had fallen, his eyes were protruding, his
+skin the colour of putty, and he glared at the envelope which he
+still held in his trembling hand, 'K. K. K.!' he shrieked, and
+then, 'My God, my God, my sins have overtaken me!'
+
+"'What is it, uncle?' I cried.
+
+"'Death,' said he, and rising from the table he retired to his
+room, leaving me palpitating with horror. I took up the envelope
+and saw scrawled in red ink upon the inner flap, just above the
+gum, the letter K three times repeated. There was nothing else
+save the five dried pips. What could be the reason of his
+overpowering terror? I left the breakfast-table, and as I
+ascended the stair I met him coming down with an old rusty key,
+which must have belonged to the attic, in one hand, and a small
+brass box, like a cashbox, in the other.
+
+"'They may do what they like, but I'll checkmate them still,'
+said he with an oath. 'Tell Mary that I shall want a fire in my
+room to-day, and send down to Fordham, the Horsham lawyer.'
+
+"I did as he ordered, and when the lawyer arrived I was asked to
+step up to the room. The fire was burning brightly, and in the
+grate there was a mass of black, fluffy ashes, as of burned
+paper, while the brass box stood open and empty beside it. As I
+glanced at the box I noticed, with a start, that upon the lid was
+printed the treble K which I had read in the morning upon the
+envelope.
+
+"'I wish you, John,' said my uncle, 'to witness my will. I leave
+my estate, with all its advantages and all its disadvantages, to
+my brother, your father, whence it will, no doubt, descend to
+you. If you can enjoy it in peace, well and good! If you find you
+cannot, take my advice, my boy, and leave it to your deadliest
+enemy. I am sorry to give you such a two-edged thing, but I can't
+say what turn things are going to take. Kindly sign the paper
+where Mr. Fordham shows you.'
+
+"I signed the paper as directed, and the lawyer took it away with
+him. The singular incident made, as you may think, the deepest
+impression upon me, and I pondered over it and turned it every
+way in my mind without being able to make anything of it. Yet I
+could not shake off the vague feeling of dread which it left
+behind, though the sensation grew less keen as the weeks passed
+and nothing happened to disturb the usual routine of our lives. I
+could see a change in my uncle, however. He drank more than ever,
+and he was less inclined for any sort of society. Most of his
+time he would spend in his room, with the door locked upon the
+inside, but sometimes he would emerge in a sort of drunken frenzy
+and would burst out of the house and tear about the garden with a
+revolver in his hand, screaming out that he was afraid of no man,
+and that he was not to be cooped up, like a sheep in a pen, by
+man or devil. When these hot fits were over, however, he would
+rush tumultuously in at the door and lock and bar it behind him,
+like a man who can brazen it out no longer against the terror
+which lies at the roots of his soul. At such times I have seen
+his face, even on a cold day, glisten with moisture, as though it
+were new raised from a basin.
+
+"Well, to come to an end of the matter, Mr. Holmes, and not to
+abuse your patience, there came a night when he made one of those
+drunken sallies from which he never came back. We found him, when
+we went to search for him, face downward in a little
+green-scummed pool, which lay at the foot of the garden. There
+was no sign of any violence, and the water was but two feet deep,
+so that the jury, having regard to his known eccentricity,
+brought in a verdict of 'suicide.' But I, who knew how he winced
+from the very thought of death, had much ado to persuade myself
+that he had gone out of his way to meet it. The matter passed,
+however, and my father entered into possession of the estate, and
+of some 14,000 pounds, which lay to his credit at the bank."
+
+"One moment," Holmes interposed, "your statement is, I foresee,
+one of the most remarkable to which I have ever listened. Let me
+have the date of the reception by your uncle of the letter, and
+the date of his supposed suicide."
+
+"The letter arrived on March 10, 1883. His death was seven weeks
+later, upon the night of May 2nd."
+
+"Thank you. Pray proceed."
+
+"When my father took over the Horsham property, he, at my
+request, made a careful examination of the attic, which had been
+always locked up. We found the brass box there, although its
+contents had been destroyed. On the inside of the cover was a
+paper label, with the initials of K. K. K. repeated upon it, and
+'Letters, memoranda, receipts, and a register' written beneath.
+These, we presume, indicated the nature of the papers which had
+been destroyed by Colonel Openshaw. For the rest, there was
+nothing of much importance in the attic save a great many
+scattered papers and note-books bearing upon my uncle's life in
+America. Some of them were of the war time and showed that he had
+done his duty well and had borne the repute of a brave soldier.
+Others were of a date during the reconstruction of the Southern
+states, and were mostly concerned with politics, for he had
+evidently taken a strong part in opposing the carpet-bag
+politicians who had been sent down from the North.
+
+"Well, it was the beginning of '84 when my father came to live at
+Horsham, and all went as well as possible with us until the
+January of '85. On the fourth day after the new year I heard my
+father give a sharp cry of surprise as we sat together at the
+breakfast-table. There he was, sitting with a newly opened
+envelope in one hand and five dried orange pips in the
+outstretched palm of the other one. He had always laughed at what
+he called my cock-and-bull story about the colonel, but he looked
+very scared and puzzled now that the same thing had come upon
+himself.
+
+"'Why, what on earth does this mean, John?' he stammered.
+
+"My heart had turned to lead. 'It is K. K. K.,' said I.
+
+"He looked inside the envelope. 'So it is,' he cried. 'Here are
+the very letters. But what is this written above them?'
+
+"'Put the papers on the sundial,' I read, peeping over his
+shoulder.
+
+"'What papers? What sundial?' he asked.
+
+"'The sundial in the garden. There is no other,' said I; 'but the
+papers must be those that are destroyed.'
+
+"'Pooh!' said he, gripping hard at his courage. 'We are in a
+civilised land here, and we can't have tomfoolery of this kind.
+Where does the thing come from?'
+
+"'From Dundee,' I answered, glancing at the postmark.
+
+"'Some preposterous practical joke,' said he. 'What have I to do
+with sundials and papers? I shall take no notice of such
+nonsense.'
+
+"'I should certainly speak to the police,' I said.
+
+"'And be laughed at for my pains. Nothing of the sort.'
+
+"'Then let me do so?'
+
+"'No, I forbid you. I won't have a fuss made about such
+nonsense.'
+
+"It was in vain to argue with him, for he was a very obstinate
+man. I went about, however, with a heart which was full of
+forebodings.
+
+"On the third day after the coming of the letter my father went
+from home to visit an old friend of his, Major Freebody, who is
+in command of one of the forts upon Portsdown Hill. I was glad
+that he should go, for it seemed to me that he was farther from
+danger when he was away from home. In that, however, I was in
+error. Upon the second day of his absence I received a telegram
+from the major, imploring me to come at once. My father had
+fallen over one of the deep chalk-pits which abound in the
+neighbourhood, and was lying senseless, with a shattered skull. I
+hurried to him, but he passed away without having ever recovered
+his consciousness. He had, as it appears, been returning from
+Fareham in the twilight, and as the country was unknown to him,
+and the chalk-pit unfenced, the jury had no hesitation in
+bringing in a verdict of 'death from accidental causes.'
+Carefully as I examined every fact connected with his death, I
+was unable to find anything which could suggest the idea of
+murder. There were no signs of violence, no footmarks, no
+robbery, no record of strangers having been seen upon the roads.
+And yet I need not tell you that my mind was far from at ease,
+and that I was well-nigh certain that some foul plot had been
+woven round him.
+
+"In this sinister way I came into my inheritance. You will ask me
+why I did not dispose of it? I answer, because I was well
+convinced that our troubles were in some way dependent upon an
+incident in my uncle's life, and that the danger would be as
+pressing in one house as in another.
+
+"It was in January, '85, that my poor father met his end, and two
+years and eight months have elapsed since then. During that time
+I have lived happily at Horsham, and I had begun to hope that
+this curse had passed away from the family, and that it had ended
+with the last generation. I had begun to take comfort too soon,
+however; yesterday morning the blow fell in the very shape in
+which it had come upon my father."
+
+The young man took from his waistcoat a crumpled envelope, and
+turning to the table he shook out upon it five little dried
+orange pips.
+
+"This is the envelope," he continued. "The postmark is
+London--eastern division. Within are the very words which were
+upon my father's last message: 'K. K. K.'; and then 'Put the
+papers on the sundial.'"
+
+"What have you done?" asked Holmes.
+
+"Nothing."
+
+"Nothing?"
+
+"To tell the truth"--he sank his face into his thin, white
+hands--"I have felt helpless. I have felt like one of those poor
+rabbits when the snake is writhing towards it. I seem to be in
+the grasp of some resistless, inexorable evil, which no foresight
+and no precautions can guard against."
+
+"Tut! tut!" cried Sherlock Holmes. "You must act, man, or you are
+lost. Nothing but energy can save you. This is no time for
+despair."
+
+"I have seen the police."
+
+"Ah!"
+
+"But they listened to my story with a smile. I am convinced that
+the inspector has formed the opinion that the letters are all
+practical jokes, and that the deaths of my relations were really
+accidents, as the jury stated, and were not to be connected with
+the warnings."
+
+Holmes shook his clenched hands in the air. "Incredible
+imbecility!" he cried.
+
+"They have, however, allowed me a policeman, who may remain in
+the house with me."
+
+"Has he come with you to-night?"
+
+"No. His orders were to stay in the house."
+
+Again Holmes raved in the air.
+
+"Why did you come to me," he cried, "and, above all, why did you
+not come at once?"
+
+"I did not know. It was only to-day that I spoke to Major
+Prendergast about my troubles and was advised by him to come to
+you."
+
+"It is really two days since you had the letter. We should have
+acted before this. You have no further evidence, I suppose, than
+that which you have placed before us--no suggestive detail which
+might help us?"
+
+"There is one thing," said John Openshaw. He rummaged in his coat
+pocket, and, drawing out a piece of discoloured, blue-tinted
+paper, he laid it out upon the table. "I have some remembrance,"
+said he, "that on the day when my uncle burned the papers I
+observed that the small, unburned margins which lay amid the
+ashes were of this particular colour. I found this single sheet
+upon the floor of his room, and I am inclined to think that it
+may be one of the papers which has, perhaps, fluttered out from
+among the others, and in that way has escaped destruction. Beyond
+the mention of pips, I do not see that it helps us much. I think
+myself that it is a page from some private diary. The writing is
+undoubtedly my uncle's."
+
+Holmes moved the lamp, and we both bent over the sheet of paper,
+which showed by its ragged edge that it had indeed been torn from
+a book. It was headed, "March, 1869," and beneath were the
+following enigmatical notices:
+
+"4th. Hudson came. Same old platform.
+
+"7th. Set the pips on McCauley, Paramore, and
+      John Swain, of St. Augustine.
+
+"9th. McCauley cleared.
+
+"10th. John Swain cleared.
+
+"12th. Visited Paramore. All well."
+
+"Thank you!" said Holmes, folding up the paper and returning it
+to our visitor. "And now you must on no account lose another
+instant. We cannot spare time even to discuss what you have told
+me. You must get home instantly and act."
+
+"What shall I do?"
+
+"There is but one thing to do. It must be done at once. You must
+put this piece of paper which you have shown us into the brass
+box which you have described. You must also put in a note to say
+that all the other papers were burned by your uncle, and that
+this is the only one which remains. You must assert that in such
+words as will carry conviction with them. Having done this, you
+must at once put the box out upon the sundial, as directed. Do
+you understand?"
+
+"Entirely."
+
+"Do not think of revenge, or anything of the sort, at present. I
+think that we may gain that by means of the law; but we have our
+web to weave, while theirs is already woven. The first
+consideration is to remove the pressing danger which threatens
+you. The second is to clear up the mystery and to punish the
+guilty parties."
+
+"I thank you," said the young man, rising and pulling on his
+overcoat. "You have given me fresh life and hope. I shall
+certainly do as you advise."
+
+"Do not lose an instant. And, above all, take care of yourself in
+the meanwhile, for I do not think that there can be a doubt that
+you are threatened by a very real and imminent danger. How do you
+go back?"
+
+"By train from Waterloo."
+
+"It is not yet nine. The streets will be crowded, so I trust that
+you may be in safety. And yet you cannot guard yourself too
+closely."
+
+"I am armed."
+
+"That is well. To-morrow I shall set to work upon your case."
+
+"I shall see you at Horsham, then?"
+
+"No, your secret lies in London. It is there that I shall seek
+it."
+
+"Then I shall call upon you in a day, or in two days, with news
+as to the box and the papers. I shall take your advice in every
+particular." He shook hands with us and took his leave. Outside
+the wind still screamed and the rain splashed and pattered
+against the windows. This strange, wild story seemed to have come
+to us from amid the mad elements--blown in upon us like a sheet
+of sea-weed in a gale--and now to have been reabsorbed by them
+once more.
+
+Sherlock Holmes sat for some time in silence, with his head sunk
+forward and his eyes bent upon the red glow of the fire. Then he
+lit his pipe, and leaning back in his chair he watched the blue
+smoke-rings as they chased each other up to the ceiling.
+
+"I think, Watson," he remarked at last, "that of all our cases we
+have had none more fantastic than this."
+
+"Save, perhaps, the Sign of Four."
+
+"Well, yes. Save, perhaps, that. And yet this John Openshaw seems
+to me to be walking amid even greater perils than did the
+Sholtos."
+
+"But have you," I asked, "formed any definite conception as to
+what these perils are?"
+
+"There can be no question as to their nature," he answered.
+
+"Then what are they? Who is this K. K. K., and why does he pursue
+this unhappy family?"
+
+Sherlock Holmes closed his eyes and placed his elbows upon the
+arms of his chair, with his finger-tips together. "The ideal
+reasoner," he remarked, "would, when he had once been shown a
+single fact in all its bearings, deduce from it not only all the
+chain of events which led up to it but also all the results which
+would follow from it. As Cuvier could correctly describe a whole
+animal by the contemplation of a single bone, so the observer who
+has thoroughly understood one link in a series of incidents
+should be able to accurately state all the other ones, both
+before and after. We have not yet grasped the results which the
+reason alone can attain to. Problems may be solved in the study
+which have baffled all those who have sought a solution by the
+aid of their senses. To carry the art, however, to its highest
+pitch, it is necessary that the reasoner should be able to
+utilise all the facts which have come to his knowledge; and this
+in itself implies, as you will readily see, a possession of all
+knowledge, which, even in these days of free education and
+encyclopaedias, is a somewhat rare accomplishment. It is not so
+impossible, however, that a man should possess all knowledge
+which is likely to be useful to him in his work, and this I have
+endeavoured in my case to do. If I remember rightly, you on one
+occasion, in the early days of our friendship, defined my limits
+in a very precise fashion."
+
+"Yes," I answered, laughing. "It was a singular document.
+Philosophy, astronomy, and politics were marked at zero, I
+remember. Botany variable, geology profound as regards the
+mud-stains from any region within fifty miles of town, chemistry
+eccentric, anatomy unsystematic, sensational literature and crime
+records unique, violin-player, boxer, swordsman, lawyer, and
+self-poisoner by cocaine and tobacco. Those, I think, were the
+main points of my analysis."
+
+Holmes grinned at the last item. "Well," he said, "I say now, as
+I said then, that a man should keep his little brain-attic
+stocked with all the furniture that he is likely to use, and the
+rest he can put away in the lumber-room of his library, where he
+can get it if he wants it. Now, for such a case as the one which
+has been submitted to us to-night, we need certainly to muster
+all our resources. Kindly hand me down the letter K of the
+'American Encyclopaedia' which stands upon the shelf beside you.
+Thank you. Now let us consider the situation and see what may be
+deduced from it. In the first place, we may start with a strong
+presumption that Colonel Openshaw had some very strong reason for
+leaving America. Men at his time of life do not change all their
+habits and exchange willingly the charming climate of Florida for
+the lonely life of an English provincial town. His extreme love
+of solitude in England suggests the idea that he was in fear of
+someone or something, so we may assume as a working hypothesis
+that it was fear of someone or something which drove him from
+America. As to what it was he feared, we can only deduce that by
+considering the formidable letters which were received by himself
+and his successors. Did you remark the postmarks of those
+letters?"
+
+"The first was from Pondicherry, the second from Dundee, and the
+third from London."
+
+"From East London. What do you deduce from that?"
+
+"They are all seaports. That the writer was on board of a ship."
+
+"Excellent. We have already a clue. There can be no doubt that
+the probability--the strong probability--is that the writer was
+on board of a ship. And now let us consider another point. In the
+case of Pondicherry, seven weeks elapsed between the threat and
+its fulfilment, in Dundee it was only some three or four days.
+Does that suggest anything?"
+
+"A greater distance to travel."
+
+"But the letter had also a greater distance to come."
+
+"Then I do not see the point."
+
+"There is at least a presumption that the vessel in which the man
+or men are is a sailing-ship. It looks as if they always send
+their singular warning or token before them when starting upon
+their mission. You see how quickly the deed followed the sign
+when it came from Dundee. If they had come from Pondicherry in a
+steamer they would have arrived almost as soon as their letter.
+But, as a matter of fact, seven weeks elapsed. I think that those
+seven weeks represented the difference between the mail-boat which
+brought the letter and the sailing vessel which brought the
+writer."
+
+"It is possible."
+
+"More than that. It is probable. And now you see the deadly
+urgency of this new case, and why I urged young Openshaw to
+caution. The blow has always fallen at the end of the time which
+it would take the senders to travel the distance. But this one
+comes from London, and therefore we cannot count upon delay."
+
+"Good God!" I cried. "What can it mean, this relentless
+persecution?"
+
+"The papers which Openshaw carried are obviously of vital
+importance to the person or persons in the sailing-ship. I think
+that it is quite clear that there must be more than one of them.
+A single man could not have carried out two deaths in such a way
+as to deceive a coroner's jury. There must have been several in
+it, and they must have been men of resource and determination.
+Their papers they mean to have, be the holder of them who it may.
+In this way you see K. K. K. ceases to be the initials of an
+individual and becomes the badge of a society."
+
+"But of what society?"
+
+"Have you never--" said Sherlock Holmes, bending forward and
+sinking his voice--"have you never heard of the Ku Klux Klan?"
+
+"I never have."
+
+Holmes turned over the leaves of the book upon his knee. "Here it
+is," said he presently:
+
+"'Ku Klux Klan. A name derived from the fanciful resemblance to
+the sound produced by cocking a rifle. This terrible secret
+society was formed by some ex-Confederate soldiers in the
+Southern states after the Civil War, and it rapidly formed local
+branches in different parts of the country, notably in Tennessee,
+Louisiana, the Carolinas, Georgia, and Florida. Its power was
+used for political purposes, principally for the terrorising of
+the negro voters and the murdering and driving from the country
+of those who were opposed to its views. Its outrages were usually
+preceded by a warning sent to the marked man in some fantastic
+but generally recognised shape--a sprig of oak-leaves in some
+parts, melon seeds or orange pips in others. On receiving this
+the victim might either openly abjure his former ways, or might
+fly from the country. If he braved the matter out, death would
+unfailingly come upon him, and usually in some strange and
+unforeseen manner. So perfect was the organisation of the
+society, and so systematic its methods, that there is hardly a
+case upon record where any man succeeded in braving it with
+impunity, or in which any of its outrages were traced home to the
+perpetrators. For some years the organisation flourished in spite
+of the efforts of the United States government and of the better
+classes of the community in the South. Eventually, in the year
+1869, the movement rather suddenly collapsed, although there have
+been sporadic outbreaks of the same sort since that date.'
+
+"You will observe," said Holmes, laying down the volume, "that
+the sudden breaking up of the society was coincident with the
+disappearance of Openshaw from America with their papers. It may
+well have been cause and effect. It is no wonder that he and his
+family have some of the more implacable spirits upon their track.
+You can understand that this register and diary may implicate
+some of the first men in the South, and that there may be many
+who will not sleep easy at night until it is recovered."
+
+"Then the page we have seen--"
+
+"Is such as we might expect. It ran, if I remember right, 'sent
+the pips to A, B, and C'--that is, sent the society's warning to
+them. Then there are successive entries that A and B cleared, or
+left the country, and finally that C was visited, with, I fear, a
+sinister result for C. Well, I think, Doctor, that we may let
+some light into this dark place, and I believe that the only
+chance young Openshaw has in the meantime is to do what I have
+told him. There is nothing more to be said or to be done
+to-night, so hand me over my violin and let us try to forget for
+half an hour the miserable weather and the still more miserable
+ways of our fellow-men."
+
+
+It had cleared in the morning, and the sun was shining with a
+subdued brightness through the dim veil which hangs over the
+great city. Sherlock Holmes was already at breakfast when I came
+down.
+
+"You will excuse me for not waiting for you," said he; "I have, I
+foresee, a very busy day before me in looking into this case of
+young Openshaw's."
+
+"What steps will you take?" I asked.
+
+"It will very much depend upon the results of my first inquiries.
+I may have to go down to Horsham, after all."
+
+"You will not go there first?"
+
+"No, I shall commence with the City. Just ring the bell and the
+maid will bring up your coffee."
+
+As I waited, I lifted the unopened newspaper from the table and
+glanced my eye over it. It rested upon a heading which sent a
+chill to my heart.
+
+"Holmes," I cried, "you are too late."
+
+"Ah!" said he, laying down his cup, "I feared as much. How was it
+done?" He spoke calmly, but I could see that he was deeply moved.
+
+"My eye caught the name of Openshaw, and the heading 'Tragedy
+Near Waterloo Bridge.' Here is the account:
+
+"Between nine and ten last night Police-Constable Cook, of the H
+Division, on duty near Waterloo Bridge, heard a cry for help and
+a splash in the water. The night, however, was extremely dark and
+stormy, so that, in spite of the help of several passers-by, it
+was quite impossible to effect a rescue. The alarm, however, was
+given, and, by the aid of the water-police, the body was
+eventually recovered. It proved to be that of a young gentleman
+whose name, as it appears from an envelope which was found in his
+pocket, was John Openshaw, and whose residence is near Horsham.
+It is conjectured that he may have been hurrying down to catch
+the last train from Waterloo Station, and that in his haste and
+the extreme darkness he missed his path and walked over the edge
+of one of the small landing-places for river steamboats. The body
+exhibited no traces of violence, and there can be no doubt that
+the deceased had been the victim of an unfortunate accident,
+which should have the effect of calling the attention of the
+authorities to the condition of the riverside landing-stages."
+
+We sat in silence for some minutes, Holmes more depressed and
+shaken than I had ever seen him.
+
+"That hurts my pride, Watson," he said at last. "It is a petty
+feeling, no doubt, but it hurts my pride. It becomes a personal
+matter with me now, and, if God sends me health, I shall set my
+hand upon this gang. That he should come to me for help, and that
+I should send him away to his death--!" He sprang from his chair
+and paced about the room in uncontrollable agitation, with a
+flush upon his sallow cheeks and a nervous clasping and
+unclasping of his long thin hands.
+
+"They must be cunning devils," he exclaimed at last. "How could
+they have decoyed him down there? The Embankment is not on the
+direct line to the station. The bridge, no doubt, was too
+crowded, even on such a night, for their purpose. Well, Watson,
+we shall see who will win in the long run. I am going out now!"
+
+"To the police?"
+
+"No; I shall be my own police. When I have spun the web they may
+take the flies, but not before."
+
+All day I was engaged in my professional work, and it was late in
+the evening before I returned to Baker Street. Sherlock Holmes
+had not come back yet. It was nearly ten o'clock before he
+entered, looking pale and worn. He walked up to the sideboard,
+and tearing a piece from the loaf he devoured it voraciously,
+washing it down with a long draught of water.
+
+"You are hungry," I remarked.
+
+"Starving. It had escaped my memory. I have had nothing since
+breakfast."
+
+"Nothing?"
+
+"Not a bite. I had no time to think of it."
+
+"And how have you succeeded?"
+
+"Well."
+
+"You have a clue?"
+
+"I have them in the hollow of my hand. Young Openshaw shall not
+long remain unavenged. Why, Watson, let us put their own devilish
+trade-mark upon them. It is well thought of!"
+
+"What do you mean?"
+
+He took an orange from the cupboard, and tearing it to pieces he
+squeezed out the pips upon the table. Of these he took five and
+thrust them into an envelope. On the inside of the flap he wrote
+"S. H. for J. O." Then he sealed it and addressed it to "Captain
+James Calhoun, Barque 'Lone Star,' Savannah, Georgia."
+
+"That will await him when he enters port," said he, chuckling.
+"It may give him a sleepless night. He will find it as sure a
+precursor of his fate as Openshaw did before him."
+
+"And who is this Captain Calhoun?"
+
+"The leader of the gang. I shall have the others, but he first."
+
+"How did you trace it, then?"
+
+He took a large sheet of paper from his pocket, all covered with
+dates and names.
+
+"I have spent the whole day," said he, "over Lloyd's registers
+and files of the old papers, following the future career of every
+vessel which touched at Pondicherry in January and February in
+'83. There were thirty-six ships of fair tonnage which were
+reported there during those months. Of these, one, the 'Lone Star,'
+instantly attracted my attention, since, although it was reported
+as having cleared from London, the name is that which is given to
+one of the states of the Union."
+
+"Texas, I think."
+
+"I was not and am not sure which; but I knew that the ship must
+have an American origin."
+
+"What then?"
+
+"I searched the Dundee records, and when I found that the barque
+'Lone Star' was there in January, '85, my suspicion became a
+certainty. I then inquired as to the vessels which lay at present
+in the port of London."
+
+"Yes?"
+
+"The 'Lone Star' had arrived here last week. I went down to the
+Albert Dock and found that she had been taken down the river by
+the early tide this morning, homeward bound to Savannah. I wired
+to Gravesend and learned that she had passed some time ago, and
+as the wind is easterly I have no doubt that she is now past the
+Goodwins and not very far from the Isle of Wight."
+
+"What will you do, then?"
+
+"Oh, I have my hand upon him. He and the two mates, are as I
+learn, the only native-born Americans in the ship. The others are
+Finns and Germans. I know, also, that they were all three away
+from the ship last night. I had it from the stevedore who has
+been loading their cargo. By the time that their sailing-ship
+reaches Savannah the mail-boat will have carried this letter, and
+the cable will have informed the police of Savannah that these
+three gentlemen are badly wanted here upon a charge of murder."
+
+There is ever a flaw, however, in the best laid of human plans,
+and the murderers of John Openshaw were never to receive the
+orange pips which would show them that another, as cunning and as
+resolute as themselves, was upon their track. Very long and very
+severe were the equinoctial gales that year. We waited long for
+news of the "Lone Star" of Savannah, but none ever reached us. We
+did at last hear that somewhere far out in the Atlantic a
+shattered stern-post of a boat was seen swinging in the trough
+of a wave, with the letters "L. S." carved upon it, and that is
+all which we shall ever know of the fate of the "Lone Star."
+
+
+
+ADVENTURE VI. THE MAN WITH THE TWISTED LIP
+
+Isa Whitney, brother of the late Elias Whitney, D.D., Principal
+of the Theological College of St. George's, was much addicted to
+opium. The habit grew upon him, as I understand, from some
+foolish freak when he was at college; for having read De
+Quincey's description of his dreams and sensations, he had
+drenched his tobacco with laudanum in an attempt to produce the
+same effects. He found, as so many more have done, that the
+practice is easier to attain than to get rid of, and for many
+years he continued to be a slave to the drug, an object of
+mingled horror and pity to his friends and relatives. I can see
+him now, with yellow, pasty face, drooping lids, and pin-point
+pupils, all huddled in a chair, the wreck and ruin of a noble
+man.
+
+One night--it was in June, '89--there came a ring to my bell,
+about the hour when a man gives his first yawn and glances at the
+clock. I sat up in my chair, and my wife laid her needle-work
+down in her lap and made a little face of disappointment.
+
+"A patient!" said she. "You'll have to go out."
+
+I groaned, for I was newly come back from a weary day.
+
+We heard the door open, a few hurried words, and then quick steps
+upon the linoleum. Our own door flew open, and a lady, clad in
+some dark-coloured stuff, with a black veil, entered the room.
+
+"You will excuse my calling so late," she began, and then,
+suddenly losing her self-control, she ran forward, threw her arms
+about my wife's neck, and sobbed upon her shoulder. "Oh, I'm in
+such trouble!" she cried; "I do so want a little help."
+
+"Why," said my wife, pulling up her veil, "it is Kate Whitney.
+How you startled me, Kate! I had not an idea who you were when
+you came in."
+
+"I didn't know what to do, so I came straight to you." That was
+always the way. Folk who were in grief came to my wife like birds
+to a light-house.
+
+"It was very sweet of you to come. Now, you must have some wine
+and water, and sit here comfortably and tell us all about it. Or
+should you rather that I sent James off to bed?"
+
+"Oh, no, no! I want the doctor's advice and help, too. It's about
+Isa. He has not been home for two days. I am so frightened about
+him!"
+
+It was not the first time that she had spoken to us of her
+husband's trouble, to me as a doctor, to my wife as an old friend
+and school companion. We soothed and comforted her by such words
+as we could find. Did she know where her husband was? Was it
+possible that we could bring him back to her?
+
+It seems that it was. She had the surest information that of late
+he had, when the fit was on him, made use of an opium den in the
+farthest east of the City. Hitherto his orgies had always been
+confined to one day, and he had come back, twitching and
+shattered, in the evening. But now the spell had been upon him
+eight-and-forty hours, and he lay there, doubtless among the
+dregs of the docks, breathing in the poison or sleeping off the
+effects. There he was to be found, she was sure of it, at the Bar
+of Gold, in Upper Swandam Lane. But what was she to do? How could
+she, a young and timid woman, make her way into such a place and
+pluck her husband out from among the ruffians who surrounded him?
+
+There was the case, and of course there was but one way out of
+it. Might I not escort her to this place? And then, as a second
+thought, why should she come at all? I was Isa Whitney's medical
+adviser, and as such I had influence over him. I could manage it
+better if I were alone. I promised her on my word that I would
+send him home in a cab within two hours if he were indeed at the
+address which she had given me. And so in ten minutes I had left
+my armchair and cheery sitting-room behind me, and was speeding
+eastward in a hansom on a strange errand, as it seemed to me at
+the time, though the future only could show how strange it was to
+be.
+
+But there was no great difficulty in the first stage of my
+adventure. Upper Swandam Lane is a vile alley lurking behind the
+high wharves which line the north side of the river to the east
+of London Bridge. Between a slop-shop and a gin-shop, approached
+by a steep flight of steps leading down to a black gap like the
+mouth of a cave, I found the den of which I was in search.
+Ordering my cab to wait, I passed down the steps, worn hollow in
+the centre by the ceaseless tread of drunken feet; and by the
+light of a flickering oil-lamp above the door I found the latch
+and made my way into a long, low room, thick and heavy with the
+brown opium smoke, and terraced with wooden berths, like the
+forecastle of an emigrant ship.
+
+Through the gloom one could dimly catch a glimpse of bodies lying
+in strange fantastic poses, bowed shoulders, bent knees, heads
+thrown back, and chins pointing upward, with here and there a
+dark, lack-lustre eye turned upon the newcomer. Out of the black
+shadows there glimmered little red circles of light, now bright,
+now faint, as the burning poison waxed or waned in the bowls of
+the metal pipes. The most lay silent, but some muttered to
+themselves, and others talked together in a strange, low,
+monotonous voice, their conversation coming in gushes, and then
+suddenly tailing off into silence, each mumbling out his own
+thoughts and paying little heed to the words of his neighbour. At
+the farther end was a small brazier of burning charcoal, beside
+which on a three-legged wooden stool there sat a tall, thin old
+man, with his jaw resting upon his two fists, and his elbows upon
+his knees, staring into the fire.
+
+As I entered, a sallow Malay attendant had hurried up with a pipe
+for me and a supply of the drug, beckoning me to an empty berth.
+
+"Thank you. I have not come to stay," said I. "There is a friend
+of mine here, Mr. Isa Whitney, and I wish to speak with him."
+
+There was a movement and an exclamation from my right, and
+peering through the gloom, I saw Whitney, pale, haggard, and
+unkempt, staring out at me.
+
+"My God! It's Watson," said he. He was in a pitiable state of
+reaction, with every nerve in a twitter. "I say, Watson, what
+o'clock is it?"
+
+"Nearly eleven."
+
+"Of what day?"
+
+"Of Friday, June 19th."
+
+"Good heavens! I thought it was Wednesday. It is Wednesday. What
+d'you want to frighten a chap for?" He sank his face onto his
+arms and began to sob in a high treble key.
+
+"I tell you that it is Friday, man. Your wife has been waiting
+this two days for you. You should be ashamed of yourself!"
+
+"So I am. But you've got mixed, Watson, for I have only been here
+a few hours, three pipes, four pipes--I forget how many. But I'll
+go home with you. I wouldn't frighten Kate--poor little Kate.
+Give me your hand! Have you a cab?"
+
+"Yes, I have one waiting."
+
+"Then I shall go in it. But I must owe something. Find what I
+owe, Watson. I am all off colour. I can do nothing for myself."
+
+I walked down the narrow passage between the double row of
+sleepers, holding my breath to keep out the vile, stupefying
+fumes of the drug, and looking about for the manager. As I passed
+the tall man who sat by the brazier I felt a sudden pluck at my
+skirt, and a low voice whispered, "Walk past me, and then look
+back at me." The words fell quite distinctly upon my ear. I
+glanced down. They could only have come from the old man at my
+side, and yet he sat now as absorbed as ever, very thin, very
+wrinkled, bent with age, an opium pipe dangling down from between
+his knees, as though it had dropped in sheer lassitude from his
+fingers. I took two steps forward and looked back. It took all my
+self-control to prevent me from breaking out into a cry of
+astonishment. He had turned his back so that none could see him
+but I. His form had filled out, his wrinkles were gone, the dull
+eyes had regained their fire, and there, sitting by the fire and
+grinning at my surprise, was none other than Sherlock Holmes. He
+made a slight motion to me to approach him, and instantly, as he
+turned his face half round to the company once more, subsided
+into a doddering, loose-lipped senility.
+
+"Holmes!" I whispered, "what on earth are you doing in this den?"
+
+"As low as you can," he answered; "I have excellent ears. If you
+would have the great kindness to get rid of that sottish friend
+of yours I should be exceedingly glad to have a little talk with
+you."
+
+"I have a cab outside."
+
+"Then pray send him home in it. You may safely trust him, for he
+appears to be too limp to get into any mischief. I should
+recommend you also to send a note by the cabman to your wife to
+say that you have thrown in your lot with me. If you will wait
+outside, I shall be with you in five minutes."
+
+It was difficult to refuse any of Sherlock Holmes' requests, for
+they were always so exceedingly definite, and put forward with
+such a quiet air of mastery. I felt, however, that when Whitney
+was once confined in the cab my mission was practically
+accomplished; and for the rest, I could not wish anything better
+than to be associated with my friend in one of those singular
+adventures which were the normal condition of his existence. In a
+few minutes I had written my note, paid Whitney's bill, led him
+out to the cab, and seen him driven through the darkness. In a
+very short time a decrepit figure had emerged from the opium den,
+and I was walking down the street with Sherlock Holmes. For two
+streets he shuffled along with a bent back and an uncertain foot.
+Then, glancing quickly round, he straightened himself out and
+burst into a hearty fit of laughter.
+
+"I suppose, Watson," said he, "that you imagine that I have added
+opium-smoking to cocaine injections, and all the other little
+weaknesses on which you have favoured me with your medical
+views."
+
+"I was certainly surprised to find you there."
+
+"But not more so than I to find you."
+
+"I came to find a friend."
+
+"And I to find an enemy."
+
+"An enemy?"
+
+"Yes; one of my natural enemies, or, shall I say, my natural
+prey. Briefly, Watson, I am in the midst of a very remarkable
+inquiry, and I have hoped to find a clue in the incoherent
+ramblings of these sots, as I have done before now. Had I been
+recognised in that den my life would not have been worth an
+hour's purchase; for I have used it before now for my own
+purposes, and the rascally Lascar who runs it has sworn to have
+vengeance upon me. There is a trap-door at the back of that
+building, near the corner of Paul's Wharf, which could tell some
+strange tales of what has passed through it upon the moonless
+nights."
+
+"What! You do not mean bodies?"
+
+"Ay, bodies, Watson. We should be rich men if we had 1000 pounds
+for every poor devil who has been done to death in that den. It
+is the vilest murder-trap on the whole riverside, and I fear that
+Neville St. Clair has entered it never to leave it more. But our
+trap should be here." He put his two forefingers between his
+teeth and whistled shrilly--a signal which was answered by a
+similar whistle from the distance, followed shortly by the rattle
+of wheels and the clink of horses' hoofs.
+
+"Now, Watson," said Holmes, as a tall dog-cart dashed up through
+the gloom, throwing out two golden tunnels of yellow light from
+its side lanterns. "You'll come with me, won't you?"
+
+"If I can be of use."
+
+"Oh, a trusty comrade is always of use; and a chronicler still
+more so. My room at The Cedars is a double-bedded one."
+
+"The Cedars?"
+
+"Yes; that is Mr. St. Clair's house. I am staying there while I
+conduct the inquiry."
+
+"Where is it, then?"
+
+"Near Lee, in Kent. We have a seven-mile drive before us."
+
+"But I am all in the dark."
+
+"Of course you are. You'll know all about it presently. Jump up
+here. All right, John; we shall not need you. Here's half a
+crown. Look out for me to-morrow, about eleven. Give her her
+head. So long, then!"
+
+He flicked the horse with his whip, and we dashed away through
+the endless succession of sombre and deserted streets, which
+widened gradually, until we were flying across a broad
+balustraded bridge, with the murky river flowing sluggishly
+beneath us. Beyond lay another dull wilderness of bricks and
+mortar, its silence broken only by the heavy, regular footfall of
+the policeman, or the songs and shouts of some belated party of
+revellers. A dull wrack was drifting slowly across the sky, and a
+star or two twinkled dimly here and there through the rifts of
+the clouds. Holmes drove in silence, with his head sunk upon his
+breast, and the air of a man who is lost in thought, while I sat
+beside him, curious to learn what this new quest might be which
+seemed to tax his powers so sorely, and yet afraid to break in
+upon the current of his thoughts. We had driven several miles,
+and were beginning to get to the fringe of the belt of suburban
+villas, when he shook himself, shrugged his shoulders, and lit up
+his pipe with the air of a man who has satisfied himself that he
+is acting for the best.
+
+"You have a grand gift of silence, Watson," said he. "It makes
+you quite invaluable as a companion. 'Pon my word, it is a great
+thing for me to have someone to talk to, for my own thoughts are
+not over-pleasant. I was wondering what I should say to this dear
+little woman to-night when she meets me at the door."
+
+"You forget that I know nothing about it."
+
+"I shall just have time to tell you the facts of the case before
+we get to Lee. It seems absurdly simple, and yet, somehow I can
+get nothing to go upon. There's plenty of thread, no doubt, but I
+can't get the end of it into my hand. Now, I'll state the case
+clearly and concisely to you, Watson, and maybe you can see a
+spark where all is dark to me."
+
+"Proceed, then."
+
+"Some years ago--to be definite, in May, 1884--there came to Lee
+a gentleman, Neville St. Clair by name, who appeared to have
+plenty of money. He took a large villa, laid out the grounds very
+nicely, and lived generally in good style. By degrees he made
+friends in the neighbourhood, and in 1887 he married the daughter
+of a local brewer, by whom he now has two children. He had no
+occupation, but was interested in several companies and went into
+town as a rule in the morning, returning by the 5:14 from Cannon
+Street every night. Mr. St. Clair is now thirty-seven years of
+age, is a man of temperate habits, a good husband, a very
+affectionate father, and a man who is popular with all who know
+him. I may add that his whole debts at the present moment, as far
+as we have been able to ascertain, amount to 88 pounds 10s., while
+he has 220 pounds standing to his credit in the Capital and
+Counties Bank. There is no reason, therefore, to think that money
+troubles have been weighing upon his mind.
+
+"Last Monday Mr. Neville St. Clair went into town rather earlier
+than usual, remarking before he started that he had two important
+commissions to perform, and that he would bring his little boy
+home a box of bricks. Now, by the merest chance, his wife
+received a telegram upon this same Monday, very shortly after his
+departure, to the effect that a small parcel of considerable
+value which she had been expecting was waiting for her at the
+offices of the Aberdeen Shipping Company. Now, if you are well up
+in your London, you will know that the office of the company is
+in Fresno Street, which branches out of Upper Swandam Lane, where
+you found me to-night. Mrs. St. Clair had her lunch, started for
+the City, did some shopping, proceeded to the company's office,
+got her packet, and found herself at exactly 4:35 walking through
+Swandam Lane on her way back to the station. Have you followed me
+so far?"
+
+"It is very clear."
+
+"If you remember, Monday was an exceedingly hot day, and Mrs. St.
+Clair walked slowly, glancing about in the hope of seeing a cab,
+as she did not like the neighbourhood in which she found herself.
+While she was walking in this way down Swandam Lane, she suddenly
+heard an ejaculation or cry, and was struck cold to see her
+husband looking down at her and, as it seemed to her, beckoning
+to her from a second-floor window. The window was open, and she
+distinctly saw his face, which she describes as being terribly
+agitated. He waved his hands frantically to her, and then
+vanished from the window so suddenly that it seemed to her that
+he had been plucked back by some irresistible force from behind.
+One singular point which struck her quick feminine eye was that
+although he wore some dark coat, such as he had started to town
+in, he had on neither collar nor necktie.
+
+"Convinced that something was amiss with him, she rushed down the
+steps--for the house was none other than the opium den in which
+you found me to-night--and running through the front room she
+attempted to ascend the stairs which led to the first floor. At
+the foot of the stairs, however, she met this Lascar scoundrel of
+whom I have spoken, who thrust her back and, aided by a Dane, who
+acts as assistant there, pushed her out into the street. Filled
+with the most maddening doubts and fears, she rushed down the
+lane and, by rare good-fortune, met in Fresno Street a number of
+constables with an inspector, all on their way to their beat. The
+inspector and two men accompanied her back, and in spite of the
+continued resistance of the proprietor, they made their way to
+the room in which Mr. St. Clair had last been seen. There was no
+sign of him there. In fact, in the whole of that floor there was
+no one to be found save a crippled wretch of hideous aspect, who,
+it seems, made his home there. Both he and the Lascar stoutly
+swore that no one else had been in the front room during the
+afternoon. So determined was their denial that the inspector was
+staggered, and had almost come to believe that Mrs. St. Clair had
+been deluded when, with a cry, she sprang at a small deal box
+which lay upon the table and tore the lid from it. Out there fell
+a cascade of children's bricks. It was the toy which he had
+promised to bring home.
+
+"This discovery, and the evident confusion which the cripple
+showed, made the inspector realise that the matter was serious.
+The rooms were carefully examined, and results all pointed to an
+abominable crime. The front room was plainly furnished as a
+sitting-room and led into a small bedroom, which looked out upon
+the back of one of the wharves. Between the wharf and the bedroom
+window is a narrow strip, which is dry at low tide but is covered
+at high tide with at least four and a half feet of water. The
+bedroom window was a broad one and opened from below. On
+examination traces of blood were to be seen upon the windowsill,
+and several scattered drops were visible upon the wooden floor of
+the bedroom. Thrust away behind a curtain in the front room were
+all the clothes of Mr. Neville St. Clair, with the exception of
+his coat. His boots, his socks, his hat, and his watch--all were
+there. There were no signs of violence upon any of these
+garments, and there were no other traces of Mr. Neville St.
+Clair. Out of the window he must apparently have gone for no
+other exit could be discovered, and the ominous bloodstains upon
+the sill gave little promise that he could save himself by
+swimming, for the tide was at its very highest at the moment of
+the tragedy.
+
+"And now as to the villains who seemed to be immediately
+implicated in the matter. The Lascar was known to be a man of the
+vilest antecedents, but as, by Mrs. St. Clair's story, he was
+known to have been at the foot of the stair within a very few
+seconds of her husband's appearance at the window, he could
+hardly have been more than an accessory to the crime. His defence
+was one of absolute ignorance, and he protested that he had no
+knowledge as to the doings of Hugh Boone, his lodger, and that he
+could not account in any way for the presence of the missing
+gentleman's clothes.
+
+"So much for the Lascar manager. Now for the sinister cripple who
+lives upon the second floor of the opium den, and who was
+certainly the last human being whose eyes rested upon Neville St.
+Clair. His name is Hugh Boone, and his hideous face is one which
+is familiar to every man who goes much to the City. He is a
+professional beggar, though in order to avoid the police
+regulations he pretends to a small trade in wax vestas. Some
+little distance down Threadneedle Street, upon the left-hand
+side, there is, as you may have remarked, a small angle in the
+wall. Here it is that this creature takes his daily seat,
+cross-legged with his tiny stock of matches on his lap, and as he
+is a piteous spectacle a small rain of charity descends into the
+greasy leather cap which lies upon the pavement beside him. I
+have watched the fellow more than once before ever I thought of
+making his professional acquaintance, and I have been surprised
+at the harvest which he has reaped in a short time. His
+appearance, you see, is so remarkable that no one can pass him
+without observing him. A shock of orange hair, a pale face
+disfigured by a horrible scar, which, by its contraction, has
+turned up the outer edge of his upper lip, a bulldog chin, and a
+pair of very penetrating dark eyes, which present a singular
+contrast to the colour of his hair, all mark him out from amid
+the common crowd of mendicants and so, too, does his wit, for he
+is ever ready with a reply to any piece of chaff which may be
+thrown at him by the passers-by. This is the man whom we now
+learn to have been the lodger at the opium den, and to have been
+the last man to see the gentleman of whom we are in quest."
+
+"But a cripple!" said I. "What could he have done single-handed
+against a man in the prime of life?"
+
+"He is a cripple in the sense that he walks with a limp; but in
+other respects he appears to be a powerful and well-nurtured man.
+Surely your medical experience would tell you, Watson, that
+weakness in one limb is often compensated for by exceptional
+strength in the others."
+
+"Pray continue your narrative."
+
+"Mrs. St. Clair had fainted at the sight of the blood upon the
+window, and she was escorted home in a cab by the police, as her
+presence could be of no help to them in their investigations.
+Inspector Barton, who had charge of the case, made a very careful
+examination of the premises, but without finding anything which
+threw any light upon the matter. One mistake had been made in not
+arresting Boone instantly, as he was allowed some few minutes
+during which he might have communicated with his friend the
+Lascar, but this fault was soon remedied, and he was seized and
+searched, without anything being found which could incriminate
+him. There were, it is true, some blood-stains upon his right
+shirt-sleeve, but he pointed to his ring-finger, which had been
+cut near the nail, and explained that the bleeding came from
+there, adding that he had been to the window not long before, and
+that the stains which had been observed there came doubtless from
+the same source. He denied strenuously having ever seen Mr.
+Neville St. Clair and swore that the presence of the clothes in
+his room was as much a mystery to him as to the police. As to
+Mrs. St. Clair's assertion that she had actually seen her husband
+at the window, he declared that she must have been either mad or
+dreaming. He was removed, loudly protesting, to the
+police-station, while the inspector remained upon the premises in
+the hope that the ebbing tide might afford some fresh clue.
+
+"And it did, though they hardly found upon the mud-bank what they
+had feared to find. It was Neville St. Clair's coat, and not
+Neville St. Clair, which lay uncovered as the tide receded. And
+what do you think they found in the pockets?"
+
+"I cannot imagine."
+
+"No, I don't think you would guess. Every pocket stuffed with
+pennies and half-pennies--421 pennies and 270 half-pennies. It
+was no wonder that it had not been swept away by the tide. But a
+human body is a different matter. There is a fierce eddy between
+the wharf and the house. It seemed likely enough that the
+weighted coat had remained when the stripped body had been sucked
+away into the river."
+
+"But I understand that all the other clothes were found in the
+room. Would the body be dressed in a coat alone?"
+
+"No, sir, but the facts might be met speciously enough. Suppose
+that this man Boone had thrust Neville St. Clair through the
+window, there is no human eye which could have seen the deed.
+What would he do then? It would of course instantly strike him
+that he must get rid of the tell-tale garments. He would seize
+the coat, then, and be in the act of throwing it out, when it
+would occur to him that it would swim and not sink. He has little
+time, for he has heard the scuffle downstairs when the wife tried
+to force her way up, and perhaps he has already heard from his
+Lascar confederate that the police are hurrying up the street.
+There is not an instant to be lost. He rushes to some secret
+hoard, where he has accumulated the fruits of his beggary, and he
+stuffs all the coins upon which he can lay his hands into the
+pockets to make sure of the coat's sinking. He throws it out, and
+would have done the same with the other garments had not he heard
+the rush of steps below, and only just had time to close the
+window when the police appeared."
+
+"It certainly sounds feasible."
+
+"Well, we will take it as a working hypothesis for want of a
+better. Boone, as I have told you, was arrested and taken to the
+station, but it could not be shown that there had ever before
+been anything against him. He had for years been known as a
+professional beggar, but his life appeared to have been a very
+quiet and innocent one. There the matter stands at present, and
+the questions which have to be solved--what Neville St. Clair was
+doing in the opium den, what happened to him when there, where is
+he now, and what Hugh Boone had to do with his disappearance--are
+all as far from a solution as ever. I confess that I cannot
+recall any case within my experience which looked at the first
+glance so simple and yet which presented such difficulties."
+
+While Sherlock Holmes had been detailing this singular series of
+events, we had been whirling through the outskirts of the great
+town until the last straggling houses had been left behind, and
+we rattled along with a country hedge upon either side of us.
+Just as he finished, however, we drove through two scattered
+villages, where a few lights still glimmered in the windows.
+
+"We are on the outskirts of Lee," said my companion. "We have
+touched on three English counties in our short drive, starting in
+Middlesex, passing over an angle of Surrey, and ending in Kent.
+See that light among the trees? That is The Cedars, and beside
+that lamp sits a woman whose anxious ears have already, I have
+little doubt, caught the clink of our horse's feet."
+
+"But why are you not conducting the case from Baker Street?" I
+asked.
+
+"Because there are many inquiries which must be made out here.
+Mrs. St. Clair has most kindly put two rooms at my disposal, and
+you may rest assured that she will have nothing but a welcome for
+my friend and colleague. I hate to meet her, Watson, when I have
+no news of her husband. Here we are. Whoa, there, whoa!"
+
+We had pulled up in front of a large villa which stood within its
+own grounds. A stable-boy had run out to the horse's head, and
+springing down, I followed Holmes up the small, winding
+gravel-drive which led to the house. As we approached, the door
+flew open, and a little blonde woman stood in the opening, clad
+in some sort of light mousseline de soie, with a touch of fluffy
+pink chiffon at her neck and wrists. She stood with her figure
+outlined against the flood of light, one hand upon the door, one
+half-raised in her eagerness, her body slightly bent, her head
+and face protruded, with eager eyes and parted lips, a standing
+question.
+
+"Well?" she cried, "well?" And then, seeing that there were two
+of us, she gave a cry of hope which sank into a groan as she saw
+that my companion shook his head and shrugged his shoulders.
+
+"No good news?"
+
+"None."
+
+"No bad?"
+
+"No."
+
+"Thank God for that. But come in. You must be weary, for you have
+had a long day."
+
+"This is my friend, Dr. Watson. He has been of most vital use to
+me in several of my cases, and a lucky chance has made it
+possible for me to bring him out and associate him with this
+investigation."
+
+"I am delighted to see you," said she, pressing my hand warmly.
+"You will, I am sure, forgive anything that may be wanting in our
+arrangements, when you consider the blow which has come so
+suddenly upon us."
+
+"My dear madam," said I, "I am an old campaigner, and if I were
+not I can very well see that no apology is needed. If I can be of
+any assistance, either to you or to my friend here, I shall be
+indeed happy."
+
+"Now, Mr. Sherlock Holmes," said the lady as we entered a
+well-lit dining-room, upon the table of which a cold supper had
+been laid out, "I should very much like to ask you one or two
+plain questions, to which I beg that you will give a plain
+answer."
+
+"Certainly, madam."
+
+"Do not trouble about my feelings. I am not hysterical, nor given
+to fainting. I simply wish to hear your real, real opinion."
+
+"Upon what point?"
+
+"In your heart of hearts, do you think that Neville is alive?"
+
+Sherlock Holmes seemed to be embarrassed by the question.
+"Frankly, now!" she repeated, standing upon the rug and looking
+keenly down at him as he leaned back in a basket-chair.
+
+"Frankly, then, madam, I do not."
+
+"You think that he is dead?"
+
+"I do."
+
+"Murdered?"
+
+"I don't say that. Perhaps."
+
+"And on what day did he meet his death?"
+
+"On Monday."
+
+"Then perhaps, Mr. Holmes, you will be good enough to explain how
+it is that I have received a letter from him to-day."
+
+Sherlock Holmes sprang out of his chair as if he had been
+galvanised.
+
+"What!" he roared.
+
+"Yes, to-day." She stood smiling, holding up a little slip of
+paper in the air.
+
+"May I see it?"
+
+"Certainly."
+
+He snatched it from her in his eagerness, and smoothing it out
+upon the table he drew over the lamp and examined it intently. I
+had left my chair and was gazing at it over his shoulder. The
+envelope was a very coarse one and was stamped with the Gravesend
+postmark and with the date of that very day, or rather of the day
+before, for it was considerably after midnight.
+
+"Coarse writing," murmured Holmes. "Surely this is not your
+husband's writing, madam."
+
+"No, but the enclosure is."
+
+"I perceive also that whoever addressed the envelope had to go
+and inquire as to the address."
+
+"How can you tell that?"
+
+"The name, you see, is in perfectly black ink, which has dried
+itself. The rest is of the greyish colour, which shows that
+blotting-paper has been used. If it had been written straight
+off, and then blotted, none would be of a deep black shade. This
+man has written the name, and there has then been a pause before
+he wrote the address, which can only mean that he was not
+familiar with it. It is, of course, a trifle, but there is
+nothing so important as trifles. Let us now see the letter. Ha!
+there has been an enclosure here!"
+
+"Yes, there was a ring. His signet-ring."
+
+"And you are sure that this is your husband's hand?"
+
+"One of his hands."
+
+"One?"
+
+"His hand when he wrote hurriedly. It is very unlike his usual
+writing, and yet I know it well."
+
+"'Dearest do not be frightened. All will come well. There is a
+huge error which it may take some little time to rectify.
+Wait in patience.--NEVILLE.' Written in pencil upon the fly-leaf
+of a book, octavo size, no water-mark. Hum! Posted to-day in
+Gravesend by a man with a dirty thumb. Ha! And the flap has been
+gummed, if I am not very much in error, by a person who had been
+chewing tobacco. And you have no doubt that it is your husband's
+hand, madam?"
+
+"None. Neville wrote those words."
+
+"And they were posted to-day at Gravesend. Well, Mrs. St. Clair,
+the clouds lighten, though I should not venture to say that the
+danger is over."
+
+"But he must be alive, Mr. Holmes."
+
+"Unless this is a clever forgery to put us on the wrong scent.
+The ring, after all, proves nothing. It may have been taken from
+him."
+
+"No, no; it is, it is his very own writing!"
+
+"Very well. It may, however, have been written on Monday and only
+posted to-day."
+
+"That is possible."
+
+"If so, much may have happened between."
+
+"Oh, you must not discourage me, Mr. Holmes. I know that all is
+well with him. There is so keen a sympathy between us that I
+should know if evil came upon him. On the very day that I saw him
+last he cut himself in the bedroom, and yet I in the dining-room
+rushed upstairs instantly with the utmost certainty that
+something had happened. Do you think that I would respond to such
+a trifle and yet be ignorant of his death?"
+
+"I have seen too much not to know that the impression of a woman
+may be more valuable than the conclusion of an analytical
+reasoner. And in this letter you certainly have a very strong
+piece of evidence to corroborate your view. But if your husband
+is alive and able to write letters, why should he remain away
+from you?"
+
+"I cannot imagine. It is unthinkable."
+
+"And on Monday he made no remarks before leaving you?"
+
+"No."
+
+"And you were surprised to see him in Swandam Lane?"
+
+"Very much so."
+
+"Was the window open?"
+
+"Yes."
+
+"Then he might have called to you?"
+
+"He might."
+
+"He only, as I understand, gave an inarticulate cry?"
+
+"Yes."
+
+"A call for help, you thought?"
+
+"Yes. He waved his hands."
+
+"But it might have been a cry of surprise. Astonishment at the
+unexpected sight of you might cause him to throw up his hands?"
+
+"It is possible."
+
+"And you thought he was pulled back?"
+
+"He disappeared so suddenly."
+
+"He might have leaped back. You did not see anyone else in the
+room?"
+
+"No, but this horrible man confessed to having been there, and
+the Lascar was at the foot of the stairs."
+
+"Quite so. Your husband, as far as you could see, had his
+ordinary clothes on?"
+
+"But without his collar or tie. I distinctly saw his bare
+throat."
+
+"Had he ever spoken of Swandam Lane?"
+
+"Never."
+
+"Had he ever showed any signs of having taken opium?"
+
+"Never."
+
+"Thank you, Mrs. St. Clair. Those are the principal points about
+which I wished to be absolutely clear. We shall now have a little
+supper and then retire, for we may have a very busy day
+to-morrow."
+
+A large and comfortable double-bedded room had been placed at our
+disposal, and I was quickly between the sheets, for I was weary
+after my night of adventure. Sherlock Holmes was a man, however,
+who, when he had an unsolved problem upon his mind, would go for
+days, and even for a week, without rest, turning it over,
+rearranging his facts, looking at it from every point of view
+until he had either fathomed it or convinced himself that his
+data were insufficient. It was soon evident to me that he was now
+preparing for an all-night sitting. He took off his coat and
+waistcoat, put on a large blue dressing-gown, and then wandered
+about the room collecting pillows from his bed and cushions from
+the sofa and armchairs. With these he constructed a sort of
+Eastern divan, upon which he perched himself cross-legged, with
+an ounce of shag tobacco and a box of matches laid out in front
+of him. In the dim light of the lamp I saw him sitting there, an
+old briar pipe between his lips, his eyes fixed vacantly upon the
+corner of the ceiling, the blue smoke curling up from him,
+silent, motionless, with the light shining upon his strong-set
+aquiline features. So he sat as I dropped off to sleep, and so he
+sat when a sudden ejaculation caused me to wake up, and I found
+the summer sun shining into the apartment. The pipe was still
+between his lips, the smoke still curled upward, and the room was
+full of a dense tobacco haze, but nothing remained of the heap of
+shag which I had seen upon the previous night.
+
+"Awake, Watson?" he asked.
+
+"Yes."
+
+"Game for a morning drive?"
+
+"Certainly."
+
+"Then dress. No one is stirring yet, but I know where the
+stable-boy sleeps, and we shall soon have the trap out." He
+chuckled to himself as he spoke, his eyes twinkled, and he seemed
+a different man to the sombre thinker of the previous night.
+
+As I dressed I glanced at my watch. It was no wonder that no one
+was stirring. It was twenty-five minutes past four. I had hardly
+finished when Holmes returned with the news that the boy was
+putting in the horse.
+
+"I want to test a little theory of mine," said he, pulling on his
+boots. "I think, Watson, that you are now standing in the
+presence of one of the most absolute fools in Europe. I deserve
+to be kicked from here to Charing Cross. But I think I have the
+key of the affair now."
+
+"And where is it?" I asked, smiling.
+
+"In the bathroom," he answered. "Oh, yes, I am not joking," he
+continued, seeing my look of incredulity. "I have just been
+there, and I have taken it out, and I have got it in this
+Gladstone bag. Come on, my boy, and we shall see whether it will
+not fit the lock."
+
+We made our way downstairs as quietly as possible, and out into
+the bright morning sunshine. In the road stood our horse and
+trap, with the half-clad stable-boy waiting at the head. We both
+sprang in, and away we dashed down the London Road. A few country
+carts were stirring, bearing in vegetables to the metropolis, but
+the lines of villas on either side were as silent and lifeless as
+some city in a dream.
+
+"It has been in some points a singular case," said Holmes,
+flicking the horse on into a gallop. "I confess that I have been
+as blind as a mole, but it is better to learn wisdom late than
+never to learn it at all."
+
+In town the earliest risers were just beginning to look sleepily
+from their windows as we drove through the streets of the Surrey
+side. Passing down the Waterloo Bridge Road we crossed over the
+river, and dashing up Wellington Street wheeled sharply to the
+right and found ourselves in Bow Street. Sherlock Holmes was well
+known to the force, and the two constables at the door saluted
+him. One of them held the horse's head while the other led us in.
+
+"Who is on duty?" asked Holmes.
+
+"Inspector Bradstreet, sir."
+
+"Ah, Bradstreet, how are you?" A tall, stout official had come
+down the stone-flagged passage, in a peaked cap and frogged
+jacket. "I wish to have a quiet word with you, Bradstreet."
+"Certainly, Mr. Holmes. Step into my room here." It was a small,
+office-like room, with a huge ledger upon the table, and a
+telephone projecting from the wall. The inspector sat down at his
+desk.
+
+"What can I do for you, Mr. Holmes?"
+
+"I called about that beggarman, Boone--the one who was charged
+with being concerned in the disappearance of Mr. Neville St.
+Clair, of Lee."
+
+"Yes. He was brought up and remanded for further inquiries."
+
+"So I heard. You have him here?"
+
+"In the cells."
+
+"Is he quiet?"
+
+"Oh, he gives no trouble. But he is a dirty scoundrel."
+
+"Dirty?"
+
+"Yes, it is all we can do to make him wash his hands, and his
+face is as black as a tinker's. Well, when once his case has been
+settled, he will have a regular prison bath; and I think, if you
+saw him, you would agree with me that he needed it."
+
+"I should like to see him very much."
+
+"Would you? That is easily done. Come this way. You can leave
+your bag."
+
+"No, I think that I'll take it."
+
+"Very good. Come this way, if you please." He led us down a
+passage, opened a barred door, passed down a winding stair, and
+brought us to a whitewashed corridor with a line of doors on each
+side.
+
+"The third on the right is his," said the inspector. "Here it
+is!" He quietly shot back a panel in the upper part of the door
+and glanced through.
+
+"He is asleep," said he. "You can see him very well."
+
+We both put our eyes to the grating. The prisoner lay with his
+face towards us, in a very deep sleep, breathing slowly and
+heavily. He was a middle-sized man, coarsely clad as became his
+calling, with a coloured shirt protruding through the rent in his
+tattered coat. He was, as the inspector had said, extremely
+dirty, but the grime which covered his face could not conceal its
+repulsive ugliness. A broad wheal from an old scar ran right
+across it from eye to chin, and by its contraction had turned up
+one side of the upper lip, so that three teeth were exposed in a
+perpetual snarl. A shock of very bright red hair grew low over
+his eyes and forehead.
+
+"He's a beauty, isn't he?" said the inspector.
+
+"He certainly needs a wash," remarked Holmes. "I had an idea that
+he might, and I took the liberty of bringing the tools with me."
+He opened the Gladstone bag as he spoke, and took out, to my
+astonishment, a very large bath-sponge.
+
+"He! he! You are a funny one," chuckled the inspector.
+
+"Now, if you will have the great goodness to open that door very
+quietly, we will soon make him cut a much more respectable
+figure."
+
+"Well, I don't know why not," said the inspector. "He doesn't
+look a credit to the Bow Street cells, does he?" He slipped his
+key into the lock, and we all very quietly entered the cell. The
+sleeper half turned, and then settled down once more into a deep
+slumber. Holmes stooped to the water-jug, moistened his sponge,
+and then rubbed it twice vigorously across and down the
+prisoner's face.
+
+"Let me introduce you," he shouted, "to Mr. Neville St. Clair, of
+Lee, in the county of Kent."
+
+Never in my life have I seen such a sight. The man's face peeled
+off under the sponge like the bark from a tree. Gone was the
+coarse brown tint! Gone, too, was the horrid scar which had
+seamed it across, and the twisted lip which had given the
+repulsive sneer to the face! A twitch brought away the tangled
+red hair, and there, sitting up in his bed, was a pale,
+sad-faced, refined-looking man, black-haired and smooth-skinned,
+rubbing his eyes and staring about him with sleepy bewilderment.
+Then suddenly realising the exposure, he broke into a scream and
+threw himself down with his face to the pillow.
+
+"Great heavens!" cried the inspector, "it is, indeed, the missing
+man. I know him from the photograph."
+
+The prisoner turned with the reckless air of a man who abandons
+himself to his destiny. "Be it so," said he. "And pray what am I
+charged with?"
+
+"With making away with Mr. Neville St.-- Oh, come, you can't be
+charged with that unless they make a case of attempted suicide of
+it," said the inspector with a grin. "Well, I have been
+twenty-seven years in the force, but this really takes the cake."
+
+"If I am Mr. Neville St. Clair, then it is obvious that no crime
+has been committed, and that, therefore, I am illegally
+detained."
+
+"No crime, but a very great error has been committed," said
+Holmes. "You would have done better to have trusted your wife."
+
+"It was not the wife; it was the children," groaned the prisoner.
+"God help me, I would not have them ashamed of their father. My
+God! What an exposure! What can I do?"
+
+Sherlock Holmes sat down beside him on the couch and patted him
+kindly on the shoulder.
+
+"If you leave it to a court of law to clear the matter up," said
+he, "of course you can hardly avoid publicity. On the other hand,
+if you convince the police authorities that there is no possible
+case against you, I do not know that there is any reason that the
+details should find their way into the papers. Inspector
+Bradstreet would, I am sure, make notes upon anything which you
+might tell us and submit it to the proper authorities. The case
+would then never go into court at all."
+
+"God bless you!" cried the prisoner passionately. "I would have
+endured imprisonment, ay, even execution, rather than have left
+my miserable secret as a family blot to my children.
+
+"You are the first who have ever heard my story. My father was a
+schoolmaster in Chesterfield, where I received an excellent
+education. I travelled in my youth, took to the stage, and
+finally became a reporter on an evening paper in London. One day
+my editor wished to have a series of articles upon begging in the
+metropolis, and I volunteered to supply them. There was the point
+from which all my adventures started. It was only by trying
+begging as an amateur that I could get the facts upon which to
+base my articles. When an actor I had, of course, learned all the
+secrets of making up, and had been famous in the green-room for
+my skill. I took advantage now of my attainments. I painted my
+face, and to make myself as pitiable as possible I made a good
+scar and fixed one side of my lip in a twist by the aid of a
+small slip of flesh-coloured plaster. Then with a red head of
+hair, and an appropriate dress, I took my station in the business
+part of the city, ostensibly as a match-seller but really as a
+beggar. For seven hours I plied my trade, and when I returned
+home in the evening I found to my surprise that I had received no
+less than 26s. 4d.
+
+"I wrote my articles and thought little more of the matter until,
+some time later, I backed a bill for a friend and had a writ
+served upon me for 25 pounds. I was at my wit's end where to get
+the money, but a sudden idea came to me. I begged a fortnight's
+grace from the creditor, asked for a holiday from my employers,
+and spent the time in begging in the City under my disguise. In
+ten days I had the money and had paid the debt.
+
+"Well, you can imagine how hard it was to settle down to arduous
+work at 2 pounds a week when I knew that I could earn as much in
+a day by smearing my face with a little paint, laying my cap on
+the ground, and sitting still. It was a long fight between my
+pride and the money, but the dollars won at last, and I threw up
+reporting and sat day after day in the corner which I had first
+chosen, inspiring pity by my ghastly face and filling my pockets
+with coppers. Only one man knew my secret. He was the keeper of a
+low den in which I used to lodge in Swandam Lane, where I could
+every morning emerge as a squalid beggar and in the evenings
+transform myself into a well-dressed man about town. This fellow,
+a Lascar, was well paid by me for his rooms, so that I knew that
+my secret was safe in his possession.
+
+"Well, very soon I found that I was saving considerable sums of
+money. I do not mean that any beggar in the streets of London
+could earn 700 pounds a year--which is less than my average
+takings--but I had exceptional advantages in my power of making
+up, and also in a facility of repartee, which improved by
+practice and made me quite a recognised character in the City.
+All day a stream of pennies, varied by silver, poured in upon me,
+and it was a very bad day in which I failed to take 2 pounds.
+
+"As I grew richer I grew more ambitious, took a house in the
+country, and eventually married, without anyone having a
+suspicion as to my real occupation. My dear wife knew that I had
+business in the City. She little knew what.
+
+"Last Monday I had finished for the day and was dressing in my
+room above the opium den when I looked out of my window and saw,
+to my horror and astonishment, that my wife was standing in the
+street, with her eyes fixed full upon me. I gave a cry of
+surprise, threw up my arms to cover my face, and, rushing to my
+confidant, the Lascar, entreated him to prevent anyone from
+coming up to me. I heard her voice downstairs, but I knew that
+she could not ascend. Swiftly I threw off my clothes, pulled on
+those of a beggar, and put on my pigments and wig. Even a wife's
+eyes could not pierce so complete a disguise. But then it
+occurred to me that there might be a search in the room, and that
+the clothes might betray me. I threw open the window, reopening
+by my violence a small cut which I had inflicted upon myself in
+the bedroom that morning. Then I seized my coat, which was
+weighted by the coppers which I had just transferred to it from
+the leather bag in which I carried my takings. I hurled it out of
+the window, and it disappeared into the Thames. The other clothes
+would have followed, but at that moment there was a rush of
+constables up the stair, and a few minutes after I found, rather,
+I confess, to my relief, that instead of being identified as Mr.
+Neville St. Clair, I was arrested as his murderer.
+
+"I do not know that there is anything else for me to explain. I
+was determined to preserve my disguise as long as possible, and
+hence my preference for a dirty face. Knowing that my wife would
+be terribly anxious, I slipped off my ring and confided it to the
+Lascar at a moment when no constable was watching me, together
+with a hurried scrawl, telling her that she had no cause to
+fear."
+
+"That note only reached her yesterday," said Holmes.
+
+"Good God! What a week she must have spent!"
+
+"The police have watched this Lascar," said Inspector Bradstreet,
+"and I can quite understand that he might find it difficult to
+post a letter unobserved. Probably he handed it to some sailor
+customer of his, who forgot all about it for some days."
+
+"That was it," said Holmes, nodding approvingly; "I have no doubt
+of it. But have you never been prosecuted for begging?"
+
+"Many times; but what was a fine to me?"
+
+"It must stop here, however," said Bradstreet. "If the police are
+to hush this thing up, there must be no more of Hugh Boone."
+
+"I have sworn it by the most solemn oaths which a man can take."
+
+"In that case I think that it is probable that no further steps
+may be taken. But if you are found again, then all must come out.
+I am sure, Mr. Holmes, that we are very much indebted to you for
+having cleared the matter up. I wish I knew how you reach your
+results."
+
+"I reached this one," said my friend, "by sitting upon five
+pillows and consuming an ounce of shag. I think, Watson, that if
+we drive to Baker Street we shall just be in time for breakfast."
+
+
+
+VII. THE ADVENTURE OF THE BLUE CARBUNCLE
+
+I had called upon my friend Sherlock Holmes upon the second
+morning after Christmas, with the intention of wishing him the
+compliments of the season. He was lounging upon the sofa in a
+purple dressing-gown, a pipe-rack within his reach upon the
+right, and a pile of crumpled morning papers, evidently newly
+studied, near at hand. Beside the couch was a wooden chair, and
+on the angle of the back hung a very seedy and disreputable
+hard-felt hat, much the worse for wear, and cracked in several
+places. A lens and a forceps lying upon the seat of the chair
+suggested that the hat had been suspended in this manner for the
+purpose of examination.
+
+"You are engaged," said I; "perhaps I interrupt you."
+
+"Not at all. I am glad to have a friend with whom I can discuss
+my results. The matter is a perfectly trivial one"--he jerked his
+thumb in the direction of the old hat--"but there are points in
+connection with it which are not entirely devoid of interest and
+even of instruction."
+
+I seated myself in his armchair and warmed my hands before his
+crackling fire, for a sharp frost had set in, and the windows
+were thick with the ice crystals. "I suppose," I remarked, "that,
+homely as it looks, this thing has some deadly story linked on to
+it--that it is the clue which will guide you in the solution of
+some mystery and the punishment of some crime."
+
+"No, no. No crime," said Sherlock Holmes, laughing. "Only one of
+those whimsical little incidents which will happen when you have
+four million human beings all jostling each other within the
+space of a few square miles. Amid the action and reaction of so
+dense a swarm of humanity, every possible combination of events
+may be expected to take place, and many a little problem will be
+presented which may be striking and bizarre without being
+criminal. We have already had experience of such."
+
+"So much so," I remarked, "that of the last six cases which I
+have added to my notes, three have been entirely free of any
+legal crime."
+
+"Precisely. You allude to my attempt to recover the Irene Adler
+papers, to the singular case of Miss Mary Sutherland, and to the
+adventure of the man with the twisted lip. Well, I have no doubt
+that this small matter will fall into the same innocent category.
+You know Peterson, the commissionaire?"
+
+"Yes."
+
+"It is to him that this trophy belongs."
+
+"It is his hat."
+
+"No, no, he found it. Its owner is unknown. I beg that you will
+look upon it not as a battered billycock but as an intellectual
+problem. And, first, as to how it came here. It arrived upon
+Christmas morning, in company with a good fat goose, which is, I
+have no doubt, roasting at this moment in front of Peterson's
+fire. The facts are these: about four o'clock on Christmas
+morning, Peterson, who, as you know, is a very honest fellow, was
+returning from some small jollification and was making his way
+homeward down Tottenham Court Road. In front of him he saw, in
+the gaslight, a tallish man, walking with a slight stagger, and
+carrying a white goose slung over his shoulder. As he reached the
+corner of Goodge Street, a row broke out between this stranger
+and a little knot of roughs. One of the latter knocked off the
+man's hat, on which he raised his stick to defend himself and,
+swinging it over his head, smashed the shop window behind him.
+Peterson had rushed forward to protect the stranger from his
+assailants; but the man, shocked at having broken the window, and
+seeing an official-looking person in uniform rushing towards him,
+dropped his goose, took to his heels, and vanished amid the
+labyrinth of small streets which lie at the back of Tottenham
+Court Road. The roughs had also fled at the appearance of
+Peterson, so that he was left in possession of the field of
+battle, and also of the spoils of victory in the shape of this
+battered hat and a most unimpeachable Christmas goose."
+
+"Which surely he restored to their owner?"
+
+"My dear fellow, there lies the problem. It is true that 'For
+Mrs. Henry Baker' was printed upon a small card which was tied to
+the bird's left leg, and it is also true that the initials 'H.
+B.' are legible upon the lining of this hat, but as there are
+some thousands of Bakers, and some hundreds of Henry Bakers in
+this city of ours, it is not easy to restore lost property to any
+one of them."
+
+"What, then, did Peterson do?"
+
+"He brought round both hat and goose to me on Christmas morning,
+knowing that even the smallest problems are of interest to me.
+The goose we retained until this morning, when there were signs
+that, in spite of the slight frost, it would be well that it
+should be eaten without unnecessary delay. Its finder has carried
+it off, therefore, to fulfil the ultimate destiny of a goose,
+while I continue to retain the hat of the unknown gentleman who
+lost his Christmas dinner."
+
+"Did he not advertise?"
+
+"No."
+
+"Then, what clue could you have as to his identity?"
+
+"Only as much as we can deduce."
+
+"From his hat?"
+
+"Precisely."
+
+"But you are joking. What can you gather from this old battered
+felt?"
+
+"Here is my lens. You know my methods. What can you gather
+yourself as to the individuality of the man who has worn this
+article?"
+
+I took the tattered object in my hands and turned it over rather
+ruefully. It was a very ordinary black hat of the usual round
+shape, hard and much the worse for wear. The lining had been of
+red silk, but was a good deal discoloured. There was no maker's
+name; but, as Holmes had remarked, the initials "H. B." were
+scrawled upon one side. It was pierced in the brim for a
+hat-securer, but the elastic was missing. For the rest, it was
+cracked, exceedingly dusty, and spotted in several places,
+although there seemed to have been some attempt to hide the
+discoloured patches by smearing them with ink.
+
+"I can see nothing," said I, handing it back to my friend.
+
+"On the contrary, Watson, you can see everything. You fail,
+however, to reason from what you see. You are too timid in
+drawing your inferences."
+
+"Then, pray tell me what it is that you can infer from this hat?"
+
+He picked it up and gazed at it in the peculiar introspective
+fashion which was characteristic of him. "It is perhaps less
+suggestive than it might have been," he remarked, "and yet there
+are a few inferences which are very distinct, and a few others
+which represent at least a strong balance of probability. That
+the man was highly intellectual is of course obvious upon the
+face of it, and also that he was fairly well-to-do within the
+last three years, although he has now fallen upon evil days. He
+had foresight, but has less now than formerly, pointing to a
+moral retrogression, which, when taken with the decline of his
+fortunes, seems to indicate some evil influence, probably drink,
+at work upon him. This may account also for the obvious fact that
+his wife has ceased to love him."
+
+"My dear Holmes!"
+
+"He has, however, retained some degree of self-respect," he
+continued, disregarding my remonstrance. "He is a man who leads a
+sedentary life, goes out little, is out of training entirely, is
+middle-aged, has grizzled hair which he has had cut within the
+last few days, and which he anoints with lime-cream. These are
+the more patent facts which are to be deduced from his hat. Also,
+by the way, that it is extremely improbable that he has gas laid
+on in his house."
+
+"You are certainly joking, Holmes."
+
+"Not in the least. Is it possible that even now, when I give you
+these results, you are unable to see how they are attained?"
+
+"I have no doubt that I am very stupid, but I must confess that I
+am unable to follow you. For example, how did you deduce that
+this man was intellectual?"
+
+For answer Holmes clapped the hat upon his head. It came right
+over the forehead and settled upon the bridge of his nose. "It is
+a question of cubic capacity," said he; "a man with so large a
+brain must have something in it."
+
+"The decline of his fortunes, then?"
+
+"This hat is three years old. These flat brims curled at the edge
+came in then. It is a hat of the very best quality. Look at the
+band of ribbed silk and the excellent lining. If this man could
+afford to buy so expensive a hat three years ago, and has had no
+hat since, then he has assuredly gone down in the world."
+
+"Well, that is clear enough, certainly. But how about the
+foresight and the moral retrogression?"
+
+Sherlock Holmes laughed. "Here is the foresight," said he putting
+his finger upon the little disc and loop of the hat-securer.
+"They are never sold upon hats. If this man ordered one, it is a
+sign of a certain amount of foresight, since he went out of his
+way to take this precaution against the wind. But since we see
+that he has broken the elastic and has not troubled to replace
+it, it is obvious that he has less foresight now than formerly,
+which is a distinct proof of a weakening nature. On the other
+hand, he has endeavoured to conceal some of these stains upon the
+felt by daubing them with ink, which is a sign that he has not
+entirely lost his self-respect."
+
+"Your reasoning is certainly plausible."
+
+"The further points, that he is middle-aged, that his hair is
+grizzled, that it has been recently cut, and that he uses
+lime-cream, are all to be gathered from a close examination of the
+lower part of the lining. The lens discloses a large number of
+hair-ends, clean cut by the scissors of the barber. They all
+appear to be adhesive, and there is a distinct odour of
+lime-cream. This dust, you will observe, is not the gritty, grey
+dust of the street but the fluffy brown dust of the house,
+showing that it has been hung up indoors most of the time, while
+the marks of moisture upon the inside are proof positive that the
+wearer perspired very freely, and could therefore, hardly be in
+the best of training."
+
+"But his wife--you said that she had ceased to love him."
+
+"This hat has not been brushed for weeks. When I see you, my dear
+Watson, with a week's accumulation of dust upon your hat, and
+when your wife allows you to go out in such a state, I shall fear
+that you also have been unfortunate enough to lose your wife's
+affection."
+
+"But he might be a bachelor."
+
+"Nay, he was bringing home the goose as a peace-offering to his
+wife. Remember the card upon the bird's leg."
+
+"You have an answer to everything. But how on earth do you deduce
+that the gas is not laid on in his house?"
+
+"One tallow stain, or even two, might come by chance; but when I
+see no less than five, I think that there can be little doubt
+that the individual must be brought into frequent contact with
+burning tallow--walks upstairs at night probably with his hat in
+one hand and a guttering candle in the other. Anyhow, he never
+got tallow-stains from a gas-jet. Are you satisfied?"
+
+"Well, it is very ingenious," said I, laughing; "but since, as
+you said just now, there has been no crime committed, and no harm
+done save the loss of a goose, all this seems to be rather a
+waste of energy."
+
+Sherlock Holmes had opened his mouth to reply, when the door flew
+open, and Peterson, the commissionaire, rushed into the apartment
+with flushed cheeks and the face of a man who is dazed with
+astonishment.
+
+"The goose, Mr. Holmes! The goose, sir!" he gasped.
+
+"Eh? What of it, then? Has it returned to life and flapped off
+through the kitchen window?" Holmes twisted himself round upon
+the sofa to get a fairer view of the man's excited face.
+
+"See here, sir! See what my wife found in its crop!" He held out
+his hand and displayed upon the centre of the palm a brilliantly
+scintillating blue stone, rather smaller than a bean in size, but
+of such purity and radiance that it twinkled like an electric
+point in the dark hollow of his hand.
+
+Sherlock Holmes sat up with a whistle. "By Jove, Peterson!" said
+he, "this is treasure trove indeed. I suppose you know what you
+have got?"
+
+"A diamond, sir? A precious stone. It cuts into glass as though
+it were putty."
+
+"It's more than a precious stone. It is the precious stone."
+
+"Not the Countess of Morcar's blue carbuncle!" I ejaculated.
+
+"Precisely so. I ought to know its size and shape, seeing that I
+have read the advertisement about it in The Times every day
+lately. It is absolutely unique, and its value can only be
+conjectured, but the reward offered of 1000 pounds is certainly
+not within a twentieth part of the market price."
+
+"A thousand pounds! Great Lord of mercy!" The commissionaire
+plumped down into a chair and stared from one to the other of us.
+
+"That is the reward, and I have reason to know that there are
+sentimental considerations in the background which would induce
+the Countess to part with half her fortune if she could but
+recover the gem."
+
+"It was lost, if I remember aright, at the Hotel Cosmopolitan," I
+remarked.
+
+"Precisely so, on December 22nd, just five days ago. John Horner,
+a plumber, was accused of having abstracted it from the lady's
+jewel-case. The evidence against him was so strong that the case
+has been referred to the Assizes. I have some account of the
+matter here, I believe." He rummaged amid his newspapers,
+glancing over the dates, until at last he smoothed one out,
+doubled it over, and read the following paragraph:
+
+"Hotel Cosmopolitan Jewel Robbery. John Horner, 26, plumber, was
+brought up upon the charge of having upon the 22nd inst.,
+abstracted from the jewel-case of the Countess of Morcar the
+valuable gem known as the blue carbuncle. James Ryder,
+upper-attendant at the hotel, gave his evidence to the effect
+that he had shown Horner up to the dressing-room of the Countess
+of Morcar upon the day of the robbery in order that he might
+solder the second bar of the grate, which was loose. He had
+remained with Horner some little time, but had finally been
+called away. On returning, he found that Horner had disappeared,
+that the bureau had been forced open, and that the small morocco
+casket in which, as it afterwards transpired, the Countess was
+accustomed to keep her jewel, was lying empty upon the
+dressing-table. Ryder instantly gave the alarm, and Horner was
+arrested the same evening; but the stone could not be found
+either upon his person or in his rooms. Catherine Cusack, maid to
+the Countess, deposed to having heard Ryder's cry of dismay on
+discovering the robbery, and to having rushed into the room,
+where she found matters as described by the last witness.
+Inspector Bradstreet, B division, gave evidence as to the arrest
+of Horner, who struggled frantically, and protested his innocence
+in the strongest terms. Evidence of a previous conviction for
+robbery having been given against the prisoner, the magistrate
+refused to deal summarily with the offence, but referred it to
+the Assizes. Horner, who had shown signs of intense emotion
+during the proceedings, fainted away at the conclusion and was
+carried out of court."
+
+"Hum! So much for the police-court," said Holmes thoughtfully,
+tossing aside the paper. "The question for us now to solve is the
+sequence of events leading from a rifled jewel-case at one end to
+the crop of a goose in Tottenham Court Road at the other. You
+see, Watson, our little deductions have suddenly assumed a much
+more important and less innocent aspect. Here is the stone; the
+stone came from the goose, and the goose came from Mr. Henry
+Baker, the gentleman with the bad hat and all the other
+characteristics with which I have bored you. So now we must set
+ourselves very seriously to finding this gentleman and
+ascertaining what part he has played in this little mystery. To
+do this, we must try the simplest means first, and these lie
+undoubtedly in an advertisement in all the evening papers. If
+this fail, I shall have recourse to other methods."
+
+"What will you say?"
+
+"Give me a pencil and that slip of paper. Now, then: 'Found at
+the corner of Goodge Street, a goose and a black felt hat. Mr.
+Henry Baker can have the same by applying at 6:30 this evening at
+221B, Baker Street.' That is clear and concise."
+
+"Very. But will he see it?"
+
+"Well, he is sure to keep an eye on the papers, since, to a poor
+man, the loss was a heavy one. He was clearly so scared by his
+mischance in breaking the window and by the approach of Peterson
+that he thought of nothing but flight, but since then he must
+have bitterly regretted the impulse which caused him to drop his
+bird. Then, again, the introduction of his name will cause him to
+see it, for everyone who knows him will direct his attention to
+it. Here you are, Peterson, run down to the advertising agency
+and have this put in the evening papers."
+
+"In which, sir?"
+
+"Oh, in the Globe, Star, Pall Mall, St. James's, Evening News,
+Standard, Echo, and any others that occur to you."
+
+"Very well, sir. And this stone?"
+
+"Ah, yes, I shall keep the stone. Thank you. And, I say,
+Peterson, just buy a goose on your way back and leave it here
+with me, for we must have one to give to this gentleman in place
+of the one which your family is now devouring."
+
+When the commissionaire had gone, Holmes took up the stone and
+held it against the light. "It's a bonny thing," said he. "Just
+see how it glints and sparkles. Of course it is a nucleus and
+focus of crime. Every good stone is. They are the devil's pet
+baits. In the larger and older jewels every facet may stand for a
+bloody deed. This stone is not yet twenty years old. It was found
+in the banks of the Amoy River in southern China and is remarkable
+in having every characteristic of the carbuncle, save that it is
+blue in shade instead of ruby red. In spite of its youth, it has
+already a sinister history. There have been two murders, a
+vitriol-throwing, a suicide, and several robberies brought about
+for the sake of this forty-grain weight of crystallised charcoal.
+Who would think that so pretty a toy would be a purveyor to the
+gallows and the prison? I'll lock it up in my strong box now and
+drop a line to the Countess to say that we have it."
+
+"Do you think that this man Horner is innocent?"
+
+"I cannot tell."
+
+"Well, then, do you imagine that this other one, Henry Baker, had
+anything to do with the matter?"
+
+"It is, I think, much more likely that Henry Baker is an
+absolutely innocent man, who had no idea that the bird which he
+was carrying was of considerably more value than if it were made
+of solid gold. That, however, I shall determine by a very simple
+test if we have an answer to our advertisement."
+
+"And you can do nothing until then?"
+
+"Nothing."
+
+"In that case I shall continue my professional round. But I shall
+come back in the evening at the hour you have mentioned, for I
+should like to see the solution of so tangled a business."
+
+"Very glad to see you. I dine at seven. There is a woodcock, I
+believe. By the way, in view of recent occurrences, perhaps I
+ought to ask Mrs. Hudson to examine its crop."
+
+I had been delayed at a case, and it was a little after half-past
+six when I found myself in Baker Street once more. As I
+approached the house I saw a tall man in a Scotch bonnet with a
+coat which was buttoned up to his chin waiting outside in the
+bright semicircle which was thrown from the fanlight. Just as I
+arrived the door was opened, and we were shown up together to
+Holmes' room.
+
+"Mr. Henry Baker, I believe," said he, rising from his armchair
+and greeting his visitor with the easy air of geniality which he
+could so readily assume. "Pray take this chair by the fire, Mr.
+Baker. It is a cold night, and I observe that your circulation is
+more adapted for summer than for winter. Ah, Watson, you have
+just come at the right time. Is that your hat, Mr. Baker?"
+
+"Yes, sir, that is undoubtedly my hat."
+
+He was a large man with rounded shoulders, a massive head, and a
+broad, intelligent face, sloping down to a pointed beard of
+grizzled brown. A touch of red in nose and cheeks, with a slight
+tremor of his extended hand, recalled Holmes' surmise as to his
+habits. His rusty black frock-coat was buttoned right up in
+front, with the collar turned up, and his lank wrists protruded
+from his sleeves without a sign of cuff or shirt. He spoke in a
+slow staccato fashion, choosing his words with care, and gave the
+impression generally of a man of learning and letters who had had
+ill-usage at the hands of fortune.
+
+"We have retained these things for some days," said Holmes,
+"because we expected to see an advertisement from you giving your
+address. I am at a loss to know now why you did not advertise."
+
+Our visitor gave a rather shamefaced laugh. "Shillings have not
+been so plentiful with me as they once were," he remarked. "I had
+no doubt that the gang of roughs who assaulted me had carried off
+both my hat and the bird. I did not care to spend more money in a
+hopeless attempt at recovering them."
+
+"Very naturally. By the way, about the bird, we were compelled to
+eat it."
+
+"To eat it!" Our visitor half rose from his chair in his
+excitement.
+
+"Yes, it would have been of no use to anyone had we not done so.
+But I presume that this other goose upon the sideboard, which is
+about the same weight and perfectly fresh, will answer your
+purpose equally well?"
+
+"Oh, certainly, certainly," answered Mr. Baker with a sigh of
+relief.
+
+"Of course, we still have the feathers, legs, crop, and so on of
+your own bird, so if you wish--"
+
+The man burst into a hearty laugh. "They might be useful to me as
+relics of my adventure," said he, "but beyond that I can hardly
+see what use the disjecta membra of my late acquaintance are
+going to be to me. No, sir, I think that, with your permission, I
+will confine my attentions to the excellent bird which I perceive
+upon the sideboard."
+
+Sherlock Holmes glanced sharply across at me with a slight shrug
+of his shoulders.
+
+"There is your hat, then, and there your bird," said he. "By the
+way, would it bore you to tell me where you got the other one
+from? I am somewhat of a fowl fancier, and I have seldom seen a
+better grown goose."
+
+"Certainly, sir," said Baker, who had risen and tucked his newly
+gained property under his arm. "There are a few of us who
+frequent the Alpha Inn, near the Museum--we are to be found in
+the Museum itself during the day, you understand. This year our
+good host, Windigate by name, instituted a goose club, by which,
+on consideration of some few pence every week, we were each to
+receive a bird at Christmas. My pence were duly paid, and the
+rest is familiar to you. I am much indebted to you, sir, for a
+Scotch bonnet is fitted neither to my years nor my gravity." With
+a comical pomposity of manner he bowed solemnly to both of us and
+strode off upon his way.
+
+"So much for Mr. Henry Baker," said Holmes when he had closed the
+door behind him. "It is quite certain that he knows nothing
+whatever about the matter. Are you hungry, Watson?"
+
+"Not particularly."
+
+"Then I suggest that we turn our dinner into a supper and follow
+up this clue while it is still hot."
+
+"By all means."
+
+It was a bitter night, so we drew on our ulsters and wrapped
+cravats about our throats. Outside, the stars were shining coldly
+in a cloudless sky, and the breath of the passers-by blew out
+into smoke like so many pistol shots. Our footfalls rang out
+crisply and loudly as we swung through the doctors' quarter,
+Wimpole Street, Harley Street, and so through Wigmore Street into
+Oxford Street. In a quarter of an hour we were in Bloomsbury at
+the Alpha Inn, which is a small public-house at the corner of one
+of the streets which runs down into Holborn. Holmes pushed open
+the door of the private bar and ordered two glasses of beer from
+the ruddy-faced, white-aproned landlord.
+
+"Your beer should be excellent if it is as good as your geese,"
+said he.
+
+"My geese!" The man seemed surprised.
+
+"Yes. I was speaking only half an hour ago to Mr. Henry Baker,
+who was a member of your goose club."
+
+"Ah! yes, I see. But you see, sir, them's not our geese."
+
+"Indeed! Whose, then?"
+
+"Well, I got the two dozen from a salesman in Covent Garden."
+
+"Indeed? I know some of them. Which was it?"
+
+"Breckinridge is his name."
+
+"Ah! I don't know him. Well, here's your good health landlord,
+and prosperity to your house. Good-night."
+
+"Now for Mr. Breckinridge," he continued, buttoning up his coat
+as we came out into the frosty air. "Remember, Watson that though
+we have so homely a thing as a goose at one end of this chain, we
+have at the other a man who will certainly get seven years' penal
+servitude unless we can establish his innocence. It is possible
+that our inquiry may but confirm his guilt; but, in any case, we
+have a line of investigation which has been missed by the police,
+and which a singular chance has placed in our hands. Let us
+follow it out to the bitter end. Faces to the south, then, and
+quick march!"
+
+We passed across Holborn, down Endell Street, and so through a
+zigzag of slums to Covent Garden Market. One of the largest
+stalls bore the name of Breckinridge upon it, and the proprietor
+a horsey-looking man, with a sharp face and trim side-whiskers was
+helping a boy to put up the shutters.
+
+"Good-evening. It's a cold night," said Holmes.
+
+The salesman nodded and shot a questioning glance at my
+companion.
+
+"Sold out of geese, I see," continued Holmes, pointing at the
+bare slabs of marble.
+
+"Let you have five hundred to-morrow morning."
+
+"That's no good."
+
+"Well, there are some on the stall with the gas-flare."
+
+"Ah, but I was recommended to you."
+
+"Who by?"
+
+"The landlord of the Alpha."
+
+"Oh, yes; I sent him a couple of dozen."
+
+"Fine birds they were, too. Now where did you get them from?"
+
+To my surprise the question provoked a burst of anger from the
+salesman.
+
+"Now, then, mister," said he, with his head cocked and his arms
+akimbo, "what are you driving at? Let's have it straight, now."
+
+"It is straight enough. I should like to know who sold you the
+geese which you supplied to the Alpha."
+
+"Well then, I shan't tell you. So now!"
+
+"Oh, it is a matter of no importance; but I don't know why you
+should be so warm over such a trifle."
+
+"Warm! You'd be as warm, maybe, if you were as pestered as I am.
+When I pay good money for a good article there should be an end
+of the business; but it's 'Where are the geese?' and 'Who did you
+sell the geese to?' and 'What will you take for the geese?' One
+would think they were the only geese in the world, to hear the
+fuss that is made over them."
+
+"Well, I have no connection with any other people who have been
+making inquiries," said Holmes carelessly. "If you won't tell us
+the bet is off, that is all. But I'm always ready to back my
+opinion on a matter of fowls, and I have a fiver on it that the
+bird I ate is country bred."
+
+"Well, then, you've lost your fiver, for it's town bred," snapped
+the salesman.
+
+"It's nothing of the kind."
+
+"I say it is."
+
+"I don't believe it."
+
+"D'you think you know more about fowls than I, who have handled
+them ever since I was a nipper? I tell you, all those birds that
+went to the Alpha were town bred."
+
+"You'll never persuade me to believe that."
+
+"Will you bet, then?"
+
+"It's merely taking your money, for I know that I am right. But
+I'll have a sovereign on with you, just to teach you not to be
+obstinate."
+
+The salesman chuckled grimly. "Bring me the books, Bill," said
+he.
+
+The small boy brought round a small thin volume and a great
+greasy-backed one, laying them out together beneath the hanging
+lamp.
+
+"Now then, Mr. Cocksure," said the salesman, "I thought that I
+was out of geese, but before I finish you'll find that there is
+still one left in my shop. You see this little book?"
+
+"Well?"
+
+"That's the list of the folk from whom I buy. D'you see? Well,
+then, here on this page are the country folk, and the numbers
+after their names are where their accounts are in the big ledger.
+Now, then! You see this other page in red ink? Well, that is a
+list of my town suppliers. Now, look at that third name. Just
+read it out to me."
+
+"Mrs. Oakshott, 117, Brixton Road--249," read Holmes.
+
+"Quite so. Now turn that up in the ledger."
+
+Holmes turned to the page indicated. "Here you are, 'Mrs.
+Oakshott, 117, Brixton Road, egg and poultry supplier.'"
+
+"Now, then, what's the last entry?"
+
+"'December 22nd. Twenty-four geese at 7s. 6d.'"
+
+"Quite so. There you are. And underneath?"
+
+"'Sold to Mr. Windigate of the Alpha, at 12s.'"
+
+"What have you to say now?"
+
+Sherlock Holmes looked deeply chagrined. He drew a sovereign from
+his pocket and threw it down upon the slab, turning away with the
+air of a man whose disgust is too deep for words. A few yards off
+he stopped under a lamp-post and laughed in the hearty, noiseless
+fashion which was peculiar to him.
+
+"When you see a man with whiskers of that cut and the 'Pink 'un'
+protruding out of his pocket, you can always draw him by a bet,"
+said he. "I daresay that if I had put 100 pounds down in front of
+him, that man would not have given me such complete information
+as was drawn from him by the idea that he was doing me on a
+wager. Well, Watson, we are, I fancy, nearing the end of our
+quest, and the only point which remains to be determined is
+whether we should go on to this Mrs. Oakshott to-night, or
+whether we should reserve it for to-morrow. It is clear from what
+that surly fellow said that there are others besides ourselves
+who are anxious about the matter, and I should--"
+
+His remarks were suddenly cut short by a loud hubbub which broke
+out from the stall which we had just left. Turning round we saw a
+little rat-faced fellow standing in the centre of the circle of
+yellow light which was thrown by the swinging lamp, while
+Breckinridge, the salesman, framed in the door of his stall, was
+shaking his fists fiercely at the cringing figure.
+
+"I've had enough of you and your geese," he shouted. "I wish you
+were all at the devil together. If you come pestering me any more
+with your silly talk I'll set the dog at you. You bring Mrs.
+Oakshott here and I'll answer her, but what have you to do with
+it? Did I buy the geese off you?"
+
+"No; but one of them was mine all the same," whined the little
+man.
+
+"Well, then, ask Mrs. Oakshott for it."
+
+"She told me to ask you."
+
+"Well, you can ask the King of Proosia, for all I care. I've had
+enough of it. Get out of this!" He rushed fiercely forward, and
+the inquirer flitted away into the darkness.
+
+"Ha! this may save us a visit to Brixton Road," whispered Holmes.
+"Come with me, and we will see what is to be made of this
+fellow." Striding through the scattered knots of people who
+lounged round the flaring stalls, my companion speedily overtook
+the little man and touched him upon the shoulder. He sprang
+round, and I could see in the gas-light that every vestige of
+colour had been driven from his face.
+
+"Who are you, then? What do you want?" he asked in a quavering
+voice.
+
+"You will excuse me," said Holmes blandly, "but I could not help
+overhearing the questions which you put to the salesman just now.
+I think that I could be of assistance to you."
+
+"You? Who are you? How could you know anything of the matter?"
+
+"My name is Sherlock Holmes. It is my business to know what other
+people don't know."
+
+"But you can know nothing of this?"
+
+"Excuse me, I know everything of it. You are endeavouring to
+trace some geese which were sold by Mrs. Oakshott, of Brixton
+Road, to a salesman named Breckinridge, by him in turn to Mr.
+Windigate, of the Alpha, and by him to his club, of which Mr.
+Henry Baker is a member."
+
+"Oh, sir, you are the very man whom I have longed to meet," cried
+the little fellow with outstretched hands and quivering fingers.
+"I can hardly explain to you how interested I am in this matter."
+
+Sherlock Holmes hailed a four-wheeler which was passing. "In that
+case we had better discuss it in a cosy room rather than in this
+wind-swept market-place," said he. "But pray tell me, before we
+go farther, who it is that I have the pleasure of assisting."
+
+The man hesitated for an instant. "My name is John Robinson," he
+answered with a sidelong glance.
+
+"No, no; the real name," said Holmes sweetly. "It is always
+awkward doing business with an alias."
+
+A flush sprang to the white cheeks of the stranger. "Well then,"
+said he, "my real name is James Ryder."
+
+"Precisely so. Head attendant at the Hotel Cosmopolitan. Pray
+step into the cab, and I shall soon be able to tell you
+everything which you would wish to know."
+
+The little man stood glancing from one to the other of us with
+half-frightened, half-hopeful eyes, as one who is not sure
+whether he is on the verge of a windfall or of a catastrophe.
+Then he stepped into the cab, and in half an hour we were back in
+the sitting-room at Baker Street. Nothing had been said during
+our drive, but the high, thin breathing of our new companion, and
+the claspings and unclaspings of his hands, spoke of the nervous
+tension within him.
+
+"Here we are!" said Holmes cheerily as we filed into the room.
+"The fire looks very seasonable in this weather. You look cold,
+Mr. Ryder. Pray take the basket-chair. I will just put on my
+slippers before we settle this little matter of yours. Now, then!
+You want to know what became of those geese?"
+
+"Yes, sir."
+
+"Or rather, I fancy, of that goose. It was one bird, I imagine in
+which you were interested--white, with a black bar across the
+tail."
+
+Ryder quivered with emotion. "Oh, sir," he cried, "can you tell
+me where it went to?"
+
+"It came here."
+
+"Here?"
+
+"Yes, and a most remarkable bird it proved. I don't wonder that
+you should take an interest in it. It laid an egg after it was
+dead--the bonniest, brightest little blue egg that ever was seen.
+I have it here in my museum."
+
+Our visitor staggered to his feet and clutched the mantelpiece
+with his right hand. Holmes unlocked his strong-box and held up
+the blue carbuncle, which shone out like a star, with a cold,
+brilliant, many-pointed radiance. Ryder stood glaring with a
+drawn face, uncertain whether to claim or to disown it.
+
+"The game's up, Ryder," said Holmes quietly. "Hold up, man, or
+you'll be into the fire! Give him an arm back into his chair,
+Watson. He's not got blood enough to go in for felony with
+impunity. Give him a dash of brandy. So! Now he looks a little
+more human. What a shrimp it is, to be sure!"
+
+For a moment he had staggered and nearly fallen, but the brandy
+brought a tinge of colour into his cheeks, and he sat staring
+with frightened eyes at his accuser.
+
+"I have almost every link in my hands, and all the proofs which I
+could possibly need, so there is little which you need tell me.
+Still, that little may as well be cleared up to make the case
+complete. You had heard, Ryder, of this blue stone of the
+Countess of Morcar's?"
+
+"It was Catherine Cusack who told me of it," said he in a
+crackling voice.
+
+"I see--her ladyship's waiting-maid. Well, the temptation of
+sudden wealth so easily acquired was too much for you, as it has
+been for better men before you; but you were not very scrupulous
+in the means you used. It seems to me, Ryder, that there is the
+making of a very pretty villain in you. You knew that this man
+Horner, the plumber, had been concerned in some such matter
+before, and that suspicion would rest the more readily upon him.
+What did you do, then? You made some small job in my lady's
+room--you and your confederate Cusack--and you managed that he
+should be the man sent for. Then, when he had left, you rifled
+the jewel-case, raised the alarm, and had this unfortunate man
+arrested. You then--"
+
+Ryder threw himself down suddenly upon the rug and clutched at my
+companion's knees. "For God's sake, have mercy!" he shrieked.
+"Think of my father! Of my mother! It would break their hearts. I
+never went wrong before! I never will again. I swear it. I'll
+swear it on a Bible. Oh, don't bring it into court! For Christ's
+sake, don't!"
+
+"Get back into your chair!" said Holmes sternly. "It is very well
+to cringe and crawl now, but you thought little enough of this
+poor Horner in the dock for a crime of which he knew nothing."
+
+"I will fly, Mr. Holmes. I will leave the country, sir. Then the
+charge against him will break down."
+
+"Hum! We will talk about that. And now let us hear a true account
+of the next act. How came the stone into the goose, and how came
+the goose into the open market? Tell us the truth, for there lies
+your only hope of safety."
+
+Ryder passed his tongue over his parched lips. "I will tell you
+it just as it happened, sir," said he. "When Horner had been
+arrested, it seemed to me that it would be best for me to get
+away with the stone at once, for I did not know at what moment
+the police might not take it into their heads to search me and my
+room. There was no place about the hotel where it would be safe.
+I went out, as if on some commission, and I made for my sister's
+house. She had married a man named Oakshott, and lived in Brixton
+Road, where she fattened fowls for the market. All the way there
+every man I met seemed to me to be a policeman or a detective;
+and, for all that it was a cold night, the sweat was pouring down
+my face before I came to the Brixton Road. My sister asked me
+what was the matter, and why I was so pale; but I told her that I
+had been upset by the jewel robbery at the hotel. Then I went
+into the back yard and smoked a pipe and wondered what it would
+be best to do.
+
+"I had a friend once called Maudsley, who went to the bad, and
+has just been serving his time in Pentonville. One day he had met
+me, and fell into talk about the ways of thieves, and how they
+could get rid of what they stole. I knew that he would be true to
+me, for I knew one or two things about him; so I made up my mind
+to go right on to Kilburn, where he lived, and take him into my
+confidence. He would show me how to turn the stone into money.
+But how to get to him in safety? I thought of the agonies I had
+gone through in coming from the hotel. I might at any moment be
+seized and searched, and there would be the stone in my waistcoat
+pocket. I was leaning against the wall at the time and looking at
+the geese which were waddling about round my feet, and suddenly
+an idea came into my head which showed me how I could beat the
+best detective that ever lived.
+
+"My sister had told me some weeks before that I might have the
+pick of her geese for a Christmas present, and I knew that she
+was always as good as her word. I would take my goose now, and in
+it I would carry my stone to Kilburn. There was a little shed in
+the yard, and behind this I drove one of the birds--a fine big
+one, white, with a barred tail. I caught it, and prying its bill
+open, I thrust the stone down its throat as far as my finger
+could reach. The bird gave a gulp, and I felt the stone pass
+along its gullet and down into its crop. But the creature flapped
+and struggled, and out came my sister to know what was the
+matter. As I turned to speak to her the brute broke loose and
+fluttered off among the others.
+
+"'Whatever were you doing with that bird, Jem?' says she.
+
+"'Well,' said I, 'you said you'd give me one for Christmas, and I
+was feeling which was the fattest.'
+
+"'Oh,' says she, 'we've set yours aside for you--Jem's bird, we
+call it. It's the big white one over yonder. There's twenty-six
+of them, which makes one for you, and one for us, and two dozen
+for the market.'
+
+"'Thank you, Maggie,' says I; 'but if it is all the same to you,
+I'd rather have that one I was handling just now.'
+
+"'The other is a good three pound heavier,' said she, 'and we
+fattened it expressly for you.'
+
+"'Never mind. I'll have the other, and I'll take it now,' said I.
+
+"'Oh, just as you like,' said she, a little huffed. 'Which is it
+you want, then?'
+
+"'That white one with the barred tail, right in the middle of the
+flock.'
+
+"'Oh, very well. Kill it and take it with you.'
+
+"Well, I did what she said, Mr. Holmes, and I carried the bird
+all the way to Kilburn. I told my pal what I had done, for he was
+a man that it was easy to tell a thing like that to. He laughed
+until he choked, and we got a knife and opened the goose. My
+heart turned to water, for there was no sign of the stone, and I
+knew that some terrible mistake had occurred. I left the bird,
+rushed back to my sister's, and hurried into the back yard. There
+was not a bird to be seen there.
+
+"'Where are they all, Maggie?' I cried.
+
+"'Gone to the dealer's, Jem.'
+
+"'Which dealer's?'
+
+"'Breckinridge, of Covent Garden.'
+
+"'But was there another with a barred tail?' I asked, 'the same
+as the one I chose?'
+
+"'Yes, Jem; there were two barred-tailed ones, and I could never
+tell them apart.'
+
+"Well, then, of course I saw it all, and I ran off as hard as my
+feet would carry me to this man Breckinridge; but he had sold the
+lot at once, and not one word would he tell me as to where they
+had gone. You heard him yourselves to-night. Well, he has always
+answered me like that. My sister thinks that I am going mad.
+Sometimes I think that I am myself. And now--and now I am myself
+a branded thief, without ever having touched the wealth for which
+I sold my character. God help me! God help me!" He burst into
+convulsive sobbing, with his face buried in his hands.
+
+There was a long silence, broken only by his heavy breathing and
+by the measured tapping of Sherlock Holmes' finger-tips upon the
+edge of the table. Then my friend rose and threw open the door.
+
+"Get out!" said he.
+
+"What, sir! Oh, Heaven bless you!"
+
+"No more words. Get out!"
+
+And no more words were needed. There was a rush, a clatter upon
+the stairs, the bang of a door, and the crisp rattle of running
+footfalls from the street.
+
+"After all, Watson," said Holmes, reaching up his hand for his
+clay pipe, "I am not retained by the police to supply their
+deficiencies. If Horner were in danger it would be another thing;
+but this fellow will not appear against him, and the case must
+collapse. I suppose that I am commuting a felony, but it is just
+possible that I am saving a soul. This fellow will not go wrong
+again; he is too terribly frightened. Send him to gaol now, and
+you make him a gaol-bird for life. Besides, it is the season of
+forgiveness. Chance has put in our way a most singular and
+whimsical problem, and its solution is its own reward. If you
+will have the goodness to touch the bell, Doctor, we will begin
+another investigation, in which, also a bird will be the chief
+feature."
+
+
+
+VIII. THE ADVENTURE OF THE SPECKLED BAND
+
+On glancing over my notes of the seventy odd cases in which I
+have during the last eight years studied the methods of my friend
+Sherlock Holmes, I find many tragic, some comic, a large number
+merely strange, but none commonplace; for, working as he did
+rather for the love of his art than for the acquirement of
+wealth, he refused to associate himself with any investigation
+which did not tend towards the unusual, and even the fantastic.
+Of all these varied cases, however, I cannot recall any which
+presented more singular features than that which was associated
+with the well-known Surrey family of the Roylotts of Stoke Moran.
+The events in question occurred in the early days of my
+association with Holmes, when we were sharing rooms as bachelors
+in Baker Street. It is possible that I might have placed them
+upon record before, but a promise of secrecy was made at the
+time, from which I have only been freed during the last month by
+the untimely death of the lady to whom the pledge was given. It
+is perhaps as well that the facts should now come to light, for I
+have reasons to know that there are widespread rumours as to the
+death of Dr. Grimesby Roylott which tend to make the matter even
+more terrible than the truth.
+
+It was early in April in the year '83 that I woke one morning to
+find Sherlock Holmes standing, fully dressed, by the side of my
+bed. He was a late riser, as a rule, and as the clock on the
+mantelpiece showed me that it was only a quarter-past seven, I
+blinked up at him in some surprise, and perhaps just a little
+resentment, for I was myself regular in my habits.
+
+"Very sorry to knock you up, Watson," said he, "but it's the
+common lot this morning. Mrs. Hudson has been knocked up, she
+retorted upon me, and I on you."
+
+"What is it, then--a fire?"
+
+"No; a client. It seems that a young lady has arrived in a
+considerable state of excitement, who insists upon seeing me. She
+is waiting now in the sitting-room. Now, when young ladies wander
+about the metropolis at this hour of the morning, and knock
+sleepy people up out of their beds, I presume that it is
+something very pressing which they have to communicate. Should it
+prove to be an interesting case, you would, I am sure, wish to
+follow it from the outset. I thought, at any rate, that I should
+call you and give you the chance."
+
+"My dear fellow, I would not miss it for anything."
+
+I had no keener pleasure than in following Holmes in his
+professional investigations, and in admiring the rapid
+deductions, as swift as intuitions, and yet always founded on a
+logical basis with which he unravelled the problems which were
+submitted to him. I rapidly threw on my clothes and was ready in
+a few minutes to accompany my friend down to the sitting-room. A
+lady dressed in black and heavily veiled, who had been sitting in
+the window, rose as we entered.
+
+"Good-morning, madam," said Holmes cheerily. "My name is Sherlock
+Holmes. This is my intimate friend and associate, Dr. Watson,
+before whom you can speak as freely as before myself. Ha! I am
+glad to see that Mrs. Hudson has had the good sense to light the
+fire. Pray draw up to it, and I shall order you a cup of hot
+coffee, for I observe that you are shivering."
+
+"It is not cold which makes me shiver," said the woman in a low
+voice, changing her seat as requested.
+
+"What, then?"
+
+"It is fear, Mr. Holmes. It is terror." She raised her veil as
+she spoke, and we could see that she was indeed in a pitiable
+state of agitation, her face all drawn and grey, with restless
+frightened eyes, like those of some hunted animal. Her features
+and figure were those of a woman of thirty, but her hair was shot
+with premature grey, and her expression was weary and haggard.
+Sherlock Holmes ran her over with one of his quick,
+all-comprehensive glances.
+
+"You must not fear," said he soothingly, bending forward and
+patting her forearm. "We shall soon set matters right, I have no
+doubt. You have come in by train this morning, I see."
+
+"You know me, then?"
+
+"No, but I observe the second half of a return ticket in the palm
+of your left glove. You must have started early, and yet you had
+a good drive in a dog-cart, along heavy roads, before you reached
+the station."
+
+The lady gave a violent start and stared in bewilderment at my
+companion.
+
+"There is no mystery, my dear madam," said he, smiling. "The left
+arm of your jacket is spattered with mud in no less than seven
+places. The marks are perfectly fresh. There is no vehicle save a
+dog-cart which throws up mud in that way, and then only when you
+sit on the left-hand side of the driver."
+
+"Whatever your reasons may be, you are perfectly correct," said
+she. "I started from home before six, reached Leatherhead at
+twenty past, and came in by the first train to Waterloo. Sir, I
+can stand this strain no longer; I shall go mad if it continues.
+I have no one to turn to--none, save only one, who cares for me,
+and he, poor fellow, can be of little aid. I have heard of you,
+Mr. Holmes; I have heard of you from Mrs. Farintosh, whom you
+helped in the hour of her sore need. It was from her that I had
+your address. Oh, sir, do you not think that you could help me,
+too, and at least throw a little light through the dense darkness
+which surrounds me? At present it is out of my power to reward
+you for your services, but in a month or six weeks I shall be
+married, with the control of my own income, and then at least you
+shall not find me ungrateful."
+
+Holmes turned to his desk and, unlocking it, drew out a small
+case-book, which he consulted.
+
+"Farintosh," said he. "Ah yes, I recall the case; it was
+concerned with an opal tiara. I think it was before your time,
+Watson. I can only say, madam, that I shall be happy to devote
+the same care to your case as I did to that of your friend. As to
+reward, my profession is its own reward; but you are at liberty
+to defray whatever expenses I may be put to, at the time which
+suits you best. And now I beg that you will lay before us
+everything that may help us in forming an opinion upon the
+matter."
+
+"Alas!" replied our visitor, "the very horror of my situation
+lies in the fact that my fears are so vague, and my suspicions
+depend so entirely upon small points, which might seem trivial to
+another, that even he to whom of all others I have a right to
+look for help and advice looks upon all that I tell him about it
+as the fancies of a nervous woman. He does not say so, but I can
+read it from his soothing answers and averted eyes. But I have
+heard, Mr. Holmes, that you can see deeply into the manifold
+wickedness of the human heart. You may advise me how to walk amid
+the dangers which encompass me."
+
+"I am all attention, madam."
+
+"My name is Helen Stoner, and I am living with my stepfather, who
+is the last survivor of one of the oldest Saxon families in
+England, the Roylotts of Stoke Moran, on the western border of
+Surrey."
+
+Holmes nodded his head. "The name is familiar to me," said he.
+
+"The family was at one time among the richest in England, and the
+estates extended over the borders into Berkshire in the north,
+and Hampshire in the west. In the last century, however, four
+successive heirs were of a dissolute and wasteful disposition,
+and the family ruin was eventually completed by a gambler in the
+days of the Regency. Nothing was left save a few acres of ground,
+and the two-hundred-year-old house, which is itself crushed under
+a heavy mortgage. The last squire dragged out his existence
+there, living the horrible life of an aristocratic pauper; but
+his only son, my stepfather, seeing that he must adapt himself to
+the new conditions, obtained an advance from a relative, which
+enabled him to take a medical degree and went out to Calcutta,
+where, by his professional skill and his force of character, he
+established a large practice. In a fit of anger, however, caused
+by some robberies which had been perpetrated in the house, he
+beat his native butler to death and narrowly escaped a capital
+sentence. As it was, he suffered a long term of imprisonment and
+afterwards returned to England a morose and disappointed man.
+
+"When Dr. Roylott was in India he married my mother, Mrs. Stoner,
+the young widow of Major-General Stoner, of the Bengal Artillery.
+My sister Julia and I were twins, and we were only two years old
+at the time of my mother's re-marriage. She had a considerable
+sum of money--not less than 1000 pounds a year--and this she
+bequeathed to Dr. Roylott entirely while we resided with him,
+with a provision that a certain annual sum should be allowed to
+each of us in the event of our marriage. Shortly after our return
+to England my mother died--she was killed eight years ago in a
+railway accident near Crewe. Dr. Roylott then abandoned his
+attempts to establish himself in practice in London and took us
+to live with him in the old ancestral house at Stoke Moran. The
+money which my mother had left was enough for all our wants, and
+there seemed to be no obstacle to our happiness.
+
+"But a terrible change came over our stepfather about this time.
+Instead of making friends and exchanging visits with our
+neighbours, who had at first been overjoyed to see a Roylott of
+Stoke Moran back in the old family seat, he shut himself up in
+his house and seldom came out save to indulge in ferocious
+quarrels with whoever might cross his path. Violence of temper
+approaching to mania has been hereditary in the men of the
+family, and in my stepfather's case it had, I believe, been
+intensified by his long residence in the tropics. A series of
+disgraceful brawls took place, two of which ended in the
+police-court, until at last he became the terror of the village,
+and the folks would fly at his approach, for he is a man of
+immense strength, and absolutely uncontrollable in his anger.
+
+"Last week he hurled the local blacksmith over a parapet into a
+stream, and it was only by paying over all the money which I
+could gather together that I was able to avert another public
+exposure. He had no friends at all save the wandering gipsies,
+and he would give these vagabonds leave to encamp upon the few
+acres of bramble-covered land which represent the family estate,
+and would accept in return the hospitality of their tents,
+wandering away with them sometimes for weeks on end. He has a
+passion also for Indian animals, which are sent over to him by a
+correspondent, and he has at this moment a cheetah and a baboon,
+which wander freely over his grounds and are feared by the
+villagers almost as much as their master.
+
+"You can imagine from what I say that my poor sister Julia and I
+had no great pleasure in our lives. No servant would stay with
+us, and for a long time we did all the work of the house. She was
+but thirty at the time of her death, and yet her hair had already
+begun to whiten, even as mine has."
+
+"Your sister is dead, then?"
+
+"She died just two years ago, and it is of her death that I wish
+to speak to you. You can understand that, living the life which I
+have described, we were little likely to see anyone of our own
+age and position. We had, however, an aunt, my mother's maiden
+sister, Miss Honoria Westphail, who lives near Harrow, and we
+were occasionally allowed to pay short visits at this lady's
+house. Julia went there at Christmas two years ago, and met there
+a half-pay major of marines, to whom she became engaged. My
+stepfather learned of the engagement when my sister returned and
+offered no objection to the marriage; but within a fortnight of
+the day which had been fixed for the wedding, the terrible event
+occurred which has deprived me of my only companion."
+
+Sherlock Holmes had been leaning back in his chair with his eyes
+closed and his head sunk in a cushion, but he half opened his
+lids now and glanced across at his visitor.
+
+"Pray be precise as to details," said he.
+
+"It is easy for me to be so, for every event of that dreadful
+time is seared into my memory. The manor-house is, as I have
+already said, very old, and only one wing is now inhabited. The
+bedrooms in this wing are on the ground floor, the sitting-rooms
+being in the central block of the buildings. Of these bedrooms
+the first is Dr. Roylott's, the second my sister's, and the third
+my own. There is no communication between them, but they all open
+out into the same corridor. Do I make myself plain?"
+
+"Perfectly so."
+
+"The windows of the three rooms open out upon the lawn. That
+fatal night Dr. Roylott had gone to his room early, though we
+knew that he had not retired to rest, for my sister was troubled
+by the smell of the strong Indian cigars which it was his custom
+to smoke. She left her room, therefore, and came into mine, where
+she sat for some time, chatting about her approaching wedding. At
+eleven o'clock she rose to leave me, but she paused at the door
+and looked back.
+
+"'Tell me, Helen,' said she, 'have you ever heard anyone whistle
+in the dead of the night?'
+
+"'Never,' said I.
+
+"'I suppose that you could not possibly whistle, yourself, in
+your sleep?'
+
+"'Certainly not. But why?'
+
+"'Because during the last few nights I have always, about three
+in the morning, heard a low, clear whistle. I am a light sleeper,
+and it has awakened me. I cannot tell where it came from--perhaps
+from the next room, perhaps from the lawn. I thought that I would
+just ask you whether you had heard it.'
+
+"'No, I have not. It must be those wretched gipsies in the
+plantation.'
+
+"'Very likely. And yet if it were on the lawn, I wonder that you
+did not hear it also.'
+
+"'Ah, but I sleep more heavily than you.'
+
+"'Well, it is of no great consequence, at any rate.' She smiled
+back at me, closed my door, and a few moments later I heard her
+key turn in the lock."
+
+"Indeed," said Holmes. "Was it your custom always to lock
+yourselves in at night?"
+
+"Always."
+
+"And why?"
+
+"I think that I mentioned to you that the doctor kept a cheetah
+and a baboon. We had no feeling of security unless our doors were
+locked."
+
+"Quite so. Pray proceed with your statement."
+
+"I could not sleep that night. A vague feeling of impending
+misfortune impressed me. My sister and I, you will recollect,
+were twins, and you know how subtle are the links which bind two
+souls which are so closely allied. It was a wild night. The wind
+was howling outside, and the rain was beating and splashing
+against the windows. Suddenly, amid all the hubbub of the gale,
+there burst forth the wild scream of a terrified woman. I knew
+that it was my sister's voice. I sprang from my bed, wrapped a
+shawl round me, and rushed into the corridor. As I opened my door
+I seemed to hear a low whistle, such as my sister described, and
+a few moments later a clanging sound, as if a mass of metal had
+fallen. As I ran down the passage, my sister's door was unlocked,
+and revolved slowly upon its hinges. I stared at it
+horror-stricken, not knowing what was about to issue from it. By
+the light of the corridor-lamp I saw my sister appear at the
+opening, her face blanched with terror, her hands groping for
+help, her whole figure swaying to and fro like that of a
+drunkard. I ran to her and threw my arms round her, but at that
+moment her knees seemed to give way and she fell to the ground.
+She writhed as one who is in terrible pain, and her limbs were
+dreadfully convulsed. At first I thought that she had not
+recognised me, but as I bent over her she suddenly shrieked out
+in a voice which I shall never forget, 'Oh, my God! Helen! It was
+the band! The speckled band!' There was something else which she
+would fain have said, and she stabbed with her finger into the
+air in the direction of the doctor's room, but a fresh convulsion
+seized her and choked her words. I rushed out, calling loudly for
+my stepfather, and I met him hastening from his room in his
+dressing-gown. When he reached my sister's side she was
+unconscious, and though he poured brandy down her throat and sent
+for medical aid from the village, all efforts were in vain, for
+she slowly sank and died without having recovered her
+consciousness. Such was the dreadful end of my beloved sister."
+
+"One moment," said Holmes, "are you sure about this whistle and
+metallic sound? Could you swear to it?"
+
+"That was what the county coroner asked me at the inquiry. It is
+my strong impression that I heard it, and yet, among the crash of
+the gale and the creaking of an old house, I may possibly have
+been deceived."
+
+"Was your sister dressed?"
+
+"No, she was in her night-dress. In her right hand was found the
+charred stump of a match, and in her left a match-box."
+
+"Showing that she had struck a light and looked about her when
+the alarm took place. That is important. And what conclusions did
+the coroner come to?"
+
+"He investigated the case with great care, for Dr. Roylott's
+conduct had long been notorious in the county, but he was unable
+to find any satisfactory cause of death. My evidence showed that
+the door had been fastened upon the inner side, and the windows
+were blocked by old-fashioned shutters with broad iron bars,
+which were secured every night. The walls were carefully sounded,
+and were shown to be quite solid all round, and the flooring was
+also thoroughly examined, with the same result. The chimney is
+wide, but is barred up by four large staples. It is certain,
+therefore, that my sister was quite alone when she met her end.
+Besides, there were no marks of any violence upon her."
+
+"How about poison?"
+
+"The doctors examined her for it, but without success."
+
+"What do you think that this unfortunate lady died of, then?"
+
+"It is my belief that she died of pure fear and nervous shock,
+though what it was that frightened her I cannot imagine."
+
+"Were there gipsies in the plantation at the time?"
+
+"Yes, there are nearly always some there."
+
+"Ah, and what did you gather from this allusion to a band--a
+speckled band?"
+
+"Sometimes I have thought that it was merely the wild talk of
+delirium, sometimes that it may have referred to some band of
+people, perhaps to these very gipsies in the plantation. I do not
+know whether the spotted handkerchiefs which so many of them wear
+over their heads might have suggested the strange adjective which
+she used."
+
+Holmes shook his head like a man who is far from being satisfied.
+
+"These are very deep waters," said he; "pray go on with your
+narrative."
+
+"Two years have passed since then, and my life has been until
+lately lonelier than ever. A month ago, however, a dear friend,
+whom I have known for many years, has done me the honour to ask
+my hand in marriage. His name is Armitage--Percy Armitage--the
+second son of Mr. Armitage, of Crane Water, near Reading. My
+stepfather has offered no opposition to the match, and we are to
+be married in the course of the spring. Two days ago some repairs
+were started in the west wing of the building, and my bedroom
+wall has been pierced, so that I have had to move into the
+chamber in which my sister died, and to sleep in the very bed in
+which she slept. Imagine, then, my thrill of terror when last
+night, as I lay awake, thinking over her terrible fate, I
+suddenly heard in the silence of the night the low whistle which
+had been the herald of her own death. I sprang up and lit the
+lamp, but nothing was to be seen in the room. I was too shaken to
+go to bed again, however, so I dressed, and as soon as it was
+daylight I slipped down, got a dog-cart at the Crown Inn, which
+is opposite, and drove to Leatherhead, from whence I have come on
+this morning with the one object of seeing you and asking your
+advice."
+
+"You have done wisely," said my friend. "But have you told me
+all?"
+
+"Yes, all."
+
+"Miss Roylott, you have not. You are screening your stepfather."
+
+"Why, what do you mean?"
+
+For answer Holmes pushed back the frill of black lace which
+fringed the hand that lay upon our visitor's knee. Five little
+livid spots, the marks of four fingers and a thumb, were printed
+upon the white wrist.
+
+"You have been cruelly used," said Holmes.
+
+The lady coloured deeply and covered over her injured wrist. "He
+is a hard man," she said, "and perhaps he hardly knows his own
+strength."
+
+There was a long silence, during which Holmes leaned his chin
+upon his hands and stared into the crackling fire.
+
+"This is a very deep business," he said at last. "There are a
+thousand details which I should desire to know before I decide
+upon our course of action. Yet we have not a moment to lose. If
+we were to come to Stoke Moran to-day, would it be possible for
+us to see over these rooms without the knowledge of your
+stepfather?"
+
+"As it happens, he spoke of coming into town to-day upon some
+most important business. It is probable that he will be away all
+day, and that there would be nothing to disturb you. We have a
+housekeeper now, but she is old and foolish, and I could easily
+get her out of the way."
+
+"Excellent. You are not averse to this trip, Watson?"
+
+"By no means."
+
+"Then we shall both come. What are you going to do yourself?"
+
+"I have one or two things which I would wish to do now that I am
+in town. But I shall return by the twelve o'clock train, so as to
+be there in time for your coming."
+
+"And you may expect us early in the afternoon. I have myself some
+small business matters to attend to. Will you not wait and
+breakfast?"
+
+"No, I must go. My heart is lightened already since I have
+confided my trouble to you. I shall look forward to seeing you
+again this afternoon." She dropped her thick black veil over her
+face and glided from the room.
+
+"And what do you think of it all, Watson?" asked Sherlock Holmes,
+leaning back in his chair.
+
+"It seems to me to be a most dark and sinister business."
+
+"Dark enough and sinister enough."
+
+"Yet if the lady is correct in saying that the flooring and walls
+are sound, and that the door, window, and chimney are impassable,
+then her sister must have been undoubtedly alone when she met her
+mysterious end."
+
+"What becomes, then, of these nocturnal whistles, and what of the
+very peculiar words of the dying woman?"
+
+"I cannot think."
+
+"When you combine the ideas of whistles at night, the presence of
+a band of gipsies who are on intimate terms with this old doctor,
+the fact that we have every reason to believe that the doctor has
+an interest in preventing his stepdaughter's marriage, the dying
+allusion to a band, and, finally, the fact that Miss Helen Stoner
+heard a metallic clang, which might have been caused by one of
+those metal bars that secured the shutters falling back into its
+place, I think that there is good ground to think that the
+mystery may be cleared along those lines."
+
+"But what, then, did the gipsies do?"
+
+"I cannot imagine."
+
+"I see many objections to any such theory."
+
+"And so do I. It is precisely for that reason that we are going
+to Stoke Moran this day. I want to see whether the objections are
+fatal, or if they may be explained away. But what in the name of
+the devil!"
+
+The ejaculation had been drawn from my companion by the fact that
+our door had been suddenly dashed open, and that a huge man had
+framed himself in the aperture. His costume was a peculiar
+mixture of the professional and of the agricultural, having a
+black top-hat, a long frock-coat, and a pair of high gaiters,
+with a hunting-crop swinging in his hand. So tall was he that his
+hat actually brushed the cross bar of the doorway, and his
+breadth seemed to span it across from side to side. A large face,
+seared with a thousand wrinkles, burned yellow with the sun, and
+marked with every evil passion, was turned from one to the other
+of us, while his deep-set, bile-shot eyes, and his high, thin,
+fleshless nose, gave him somewhat the resemblance to a fierce old
+bird of prey.
+
+"Which of you is Holmes?" asked this apparition.
+
+"My name, sir; but you have the advantage of me," said my
+companion quietly.
+
+"I am Dr. Grimesby Roylott, of Stoke Moran."
+
+"Indeed, Doctor," said Holmes blandly. "Pray take a seat."
+
+"I will do nothing of the kind. My stepdaughter has been here. I
+have traced her. What has she been saying to you?"
+
+"It is a little cold for the time of the year," said Holmes.
+
+"What has she been saying to you?" screamed the old man
+furiously.
+
+"But I have heard that the crocuses promise well," continued my
+companion imperturbably.
+
+"Ha! You put me off, do you?" said our new visitor, taking a step
+forward and shaking his hunting-crop. "I know you, you scoundrel!
+I have heard of you before. You are Holmes, the meddler."
+
+My friend smiled.
+
+"Holmes, the busybody!"
+
+His smile broadened.
+
+"Holmes, the Scotland Yard Jack-in-office!"
+
+Holmes chuckled heartily. "Your conversation is most
+entertaining," said he. "When you go out close the door, for
+there is a decided draught."
+
+"I will go when I have said my say. Don't you dare to meddle with
+my affairs. I know that Miss Stoner has been here. I traced her!
+I am a dangerous man to fall foul of! See here." He stepped
+swiftly forward, seized the poker, and bent it into a curve with
+his huge brown hands.
+
+"See that you keep yourself out of my grip," he snarled, and
+hurling the twisted poker into the fireplace he strode out of the
+room.
+
+"He seems a very amiable person," said Holmes, laughing. "I am
+not quite so bulky, but if he had remained I might have shown him
+that my grip was not much more feeble than his own." As he spoke
+he picked up the steel poker and, with a sudden effort,
+straightened it out again.
+
+"Fancy his having the insolence to confound me with the official
+detective force! This incident gives zest to our investigation,
+however, and I only trust that our little friend will not suffer
+from her imprudence in allowing this brute to trace her. And now,
+Watson, we shall order breakfast, and afterwards I shall walk
+down to Doctors' Commons, where I hope to get some data which may
+help us in this matter."
+
+
+It was nearly one o'clock when Sherlock Holmes returned from his
+excursion. He held in his hand a sheet of blue paper, scrawled
+over with notes and figures.
+
+"I have seen the will of the deceased wife," said he. "To
+determine its exact meaning I have been obliged to work out the
+present prices of the investments with which it is concerned. The
+total income, which at the time of the wife's death was little
+short of 1100 pounds, is now, through the fall in agricultural
+prices, not more than 750 pounds. Each daughter can claim an
+income of 250 pounds, in case of marriage. It is evident,
+therefore, that if both girls had married, this beauty would have
+had a mere pittance, while even one of them would cripple him to
+a very serious extent. My morning's work has not been wasted,
+since it has proved that he has the very strongest motives for
+standing in the way of anything of the sort. And now, Watson,
+this is too serious for dawdling, especially as the old man is
+aware that we are interesting ourselves in his affairs; so if you
+are ready, we shall call a cab and drive to Waterloo. I should be
+very much obliged if you would slip your revolver into your
+pocket. An Eley's No. 2 is an excellent argument with gentlemen
+who can twist steel pokers into knots. That and a tooth-brush
+are, I think, all that we need."
+
+At Waterloo we were fortunate in catching a train for
+Leatherhead, where we hired a trap at the station inn and drove
+for four or five miles through the lovely Surrey lanes. It was a
+perfect day, with a bright sun and a few fleecy clouds in the
+heavens. The trees and wayside hedges were just throwing out
+their first green shoots, and the air was full of the pleasant
+smell of the moist earth. To me at least there was a strange
+contrast between the sweet promise of the spring and this
+sinister quest upon which we were engaged. My companion sat in
+the front of the trap, his arms folded, his hat pulled down over
+his eyes, and his chin sunk upon his breast, buried in the
+deepest thought. Suddenly, however, he started, tapped me on the
+shoulder, and pointed over the meadows.
+
+"Look there!" said he.
+
+A heavily timbered park stretched up in a gentle slope,
+thickening into a grove at the highest point. From amid the
+branches there jutted out the grey gables and high roof-tree of a
+very old mansion.
+
+"Stoke Moran?" said he.
+
+"Yes, sir, that be the house of Dr. Grimesby Roylott," remarked
+the driver.
+
+"There is some building going on there," said Holmes; "that is
+where we are going."
+
+"There's the village," said the driver, pointing to a cluster of
+roofs some distance to the left; "but if you want to get to the
+house, you'll find it shorter to get over this stile, and so by
+the foot-path over the fields. There it is, where the lady is
+walking."
+
+"And the lady, I fancy, is Miss Stoner," observed Holmes, shading
+his eyes. "Yes, I think we had better do as you suggest."
+
+We got off, paid our fare, and the trap rattled back on its way
+to Leatherhead.
+
+"I thought it as well," said Holmes as we climbed the stile,
+"that this fellow should think we had come here as architects, or
+on some definite business. It may stop his gossip.
+Good-afternoon, Miss Stoner. You see that we have been as good as
+our word."
+
+Our client of the morning had hurried forward to meet us with a
+face which spoke her joy. "I have been waiting so eagerly for
+you," she cried, shaking hands with us warmly. "All has turned
+out splendidly. Dr. Roylott has gone to town, and it is unlikely
+that he will be back before evening."
+
+"We have had the pleasure of making the doctor's acquaintance,"
+said Holmes, and in a few words he sketched out what had
+occurred. Miss Stoner turned white to the lips as she listened.
+
+"Good heavens!" she cried, "he has followed me, then."
+
+"So it appears."
+
+"He is so cunning that I never know when I am safe from him. What
+will he say when he returns?"
+
+"He must guard himself, for he may find that there is someone
+more cunning than himself upon his track. You must lock yourself
+up from him to-night. If he is violent, we shall take you away to
+your aunt's at Harrow. Now, we must make the best use of our
+time, so kindly take us at once to the rooms which we are to
+examine."
+
+The building was of grey, lichen-blotched stone, with a high
+central portion and two curving wings, like the claws of a crab,
+thrown out on each side. In one of these wings the windows were
+broken and blocked with wooden boards, while the roof was partly
+caved in, a picture of ruin. The central portion was in little
+better repair, but the right-hand block was comparatively modern,
+and the blinds in the windows, with the blue smoke curling up
+from the chimneys, showed that this was where the family resided.
+Some scaffolding had been erected against the end wall, and the
+stone-work had been broken into, but there were no signs of any
+workmen at the moment of our visit. Holmes walked slowly up and
+down the ill-trimmed lawn and examined with deep attention the
+outsides of the windows.
+
+"This, I take it, belongs to the room in which you used to sleep,
+the centre one to your sister's, and the one next to the main
+building to Dr. Roylott's chamber?"
+
+"Exactly so. But I am now sleeping in the middle one."
+
+"Pending the alterations, as I understand. By the way, there does
+not seem to be any very pressing need for repairs at that end
+wall."
+
+"There were none. I believe that it was an excuse to move me from
+my room."
+
+"Ah! that is suggestive. Now, on the other side of this narrow
+wing runs the corridor from which these three rooms open. There
+are windows in it, of course?"
+
+"Yes, but very small ones. Too narrow for anyone to pass
+through."
+
+"As you both locked your doors at night, your rooms were
+unapproachable from that side. Now, would you have the kindness
+to go into your room and bar your shutters?"
+
+Miss Stoner did so, and Holmes, after a careful examination
+through the open window, endeavoured in every way to force the
+shutter open, but without success. There was no slit through
+which a knife could be passed to raise the bar. Then with his
+lens he tested the hinges, but they were of solid iron, built
+firmly into the massive masonry. "Hum!" said he, scratching his
+chin in some perplexity, "my theory certainly presents some
+difficulties. No one could pass these shutters if they were
+bolted. Well, we shall see if the inside throws any light upon
+the matter."
+
+A small side door led into the whitewashed corridor from which
+the three bedrooms opened. Holmes refused to examine the third
+chamber, so we passed at once to the second, that in which Miss
+Stoner was now sleeping, and in which her sister had met with her
+fate. It was a homely little room, with a low ceiling and a
+gaping fireplace, after the fashion of old country-houses. A
+brown chest of drawers stood in one corner, a narrow
+white-counterpaned bed in another, and a dressing-table on the
+left-hand side of the window. These articles, with two small
+wicker-work chairs, made up all the furniture in the room save
+for a square of Wilton carpet in the centre. The boards round and
+the panelling of the walls were of brown, worm-eaten oak, so old
+and discoloured that it may have dated from the original building
+of the house. Holmes drew one of the chairs into a corner and sat
+silent, while his eyes travelled round and round and up and down,
+taking in every detail of the apartment.
+
+"Where does that bell communicate with?" he asked at last
+pointing to a thick bell-rope which hung down beside the bed, the
+tassel actually lying upon the pillow.
+
+"It goes to the housekeeper's room."
+
+"It looks newer than the other things?"
+
+"Yes, it was only put there a couple of years ago."
+
+"Your sister asked for it, I suppose?"
+
+"No, I never heard of her using it. We used always to get what we
+wanted for ourselves."
+
+"Indeed, it seemed unnecessary to put so nice a bell-pull there.
+You will excuse me for a few minutes while I satisfy myself as to
+this floor." He threw himself down upon his face with his lens in
+his hand and crawled swiftly backward and forward, examining
+minutely the cracks between the boards. Then he did the same with
+the wood-work with which the chamber was panelled. Finally he
+walked over to the bed and spent some time in staring at it and
+in running his eye up and down the wall. Finally he took the
+bell-rope in his hand and gave it a brisk tug.
+
+"Why, it's a dummy," said he.
+
+"Won't it ring?"
+
+"No, it is not even attached to a wire. This is very interesting.
+You can see now that it is fastened to a hook just above where
+the little opening for the ventilator is."
+
+"How very absurd! I never noticed that before."
+
+"Very strange!" muttered Holmes, pulling at the rope. "There are
+one or two very singular points about this room. For example,
+what a fool a builder must be to open a ventilator into another
+room, when, with the same trouble, he might have communicated
+with the outside air!"
+
+"That is also quite modern," said the lady.
+
+"Done about the same time as the bell-rope?" remarked Holmes.
+
+"Yes, there were several little changes carried out about that
+time."
+
+"They seem to have been of a most interesting character--dummy
+bell-ropes, and ventilators which do not ventilate. With your
+permission, Miss Stoner, we shall now carry our researches into
+the inner apartment."
+
+Dr. Grimesby Roylott's chamber was larger than that of his
+step-daughter, but was as plainly furnished. A camp-bed, a small
+wooden shelf full of books, mostly of a technical character, an
+armchair beside the bed, a plain wooden chair against the wall, a
+round table, and a large iron safe were the principal things
+which met the eye. Holmes walked slowly round and examined each
+and all of them with the keenest interest.
+
+"What's in here?" he asked, tapping the safe.
+
+"My stepfather's business papers."
+
+"Oh! you have seen inside, then?"
+
+"Only once, some years ago. I remember that it was full of
+papers."
+
+"There isn't a cat in it, for example?"
+
+"No. What a strange idea!"
+
+"Well, look at this!" He took up a small saucer of milk which
+stood on the top of it.
+
+"No; we don't keep a cat. But there is a cheetah and a baboon."
+
+"Ah, yes, of course! Well, a cheetah is just a big cat, and yet a
+saucer of milk does not go very far in satisfying its wants, I
+daresay. There is one point which I should wish to determine." He
+squatted down in front of the wooden chair and examined the seat
+of it with the greatest attention.
+
+"Thank you. That is quite settled," said he, rising and putting
+his lens in his pocket. "Hullo! Here is something interesting!"
+
+The object which had caught his eye was a small dog lash hung on
+one corner of the bed. The lash, however, was curled upon itself
+and tied so as to make a loop of whipcord.
+
+"What do you make of that, Watson?"
+
+"It's a common enough lash. But I don't know why it should be
+tied."
+
+"That is not quite so common, is it? Ah, me! it's a wicked world,
+and when a clever man turns his brains to crime it is the worst
+of all. I think that I have seen enough now, Miss Stoner, and
+with your permission we shall walk out upon the lawn."
+
+I had never seen my friend's face so grim or his brow so dark as
+it was when we turned from the scene of this investigation. We
+had walked several times up and down the lawn, neither Miss
+Stoner nor myself liking to break in upon his thoughts before he
+roused himself from his reverie.
+
+"It is very essential, Miss Stoner," said he, "that you should
+absolutely follow my advice in every respect."
+
+"I shall most certainly do so."
+
+"The matter is too serious for any hesitation. Your life may
+depend upon your compliance."
+
+"I assure you that I am in your hands."
+
+"In the first place, both my friend and I must spend the night in
+your room."
+
+Both Miss Stoner and I gazed at him in astonishment.
+
+"Yes, it must be so. Let me explain. I believe that that is the
+village inn over there?"
+
+"Yes, that is the Crown."
+
+"Very good. Your windows would be visible from there?"
+
+"Certainly."
+
+"You must confine yourself to your room, on pretence of a
+headache, when your stepfather comes back. Then when you hear him
+retire for the night, you must open the shutters of your window,
+undo the hasp, put your lamp there as a signal to us, and then
+withdraw quietly with everything which you are likely to want
+into the room which you used to occupy. I have no doubt that, in
+spite of the repairs, you could manage there for one night."
+
+"Oh, yes, easily."
+
+"The rest you will leave in our hands."
+
+"But what will you do?"
+
+"We shall spend the night in your room, and we shall investigate
+the cause of this noise which has disturbed you."
+
+"I believe, Mr. Holmes, that you have already made up your mind,"
+said Miss Stoner, laying her hand upon my companion's sleeve.
+
+"Perhaps I have."
+
+"Then, for pity's sake, tell me what was the cause of my sister's
+death."
+
+"I should prefer to have clearer proofs before I speak."
+
+"You can at least tell me whether my own thought is correct, and
+if she died from some sudden fright."
+
+"No, I do not think so. I think that there was probably some more
+tangible cause. And now, Miss Stoner, we must leave you for if
+Dr. Roylott returned and saw us our journey would be in vain.
+Good-bye, and be brave, for if you will do what I have told you,
+you may rest assured that we shall soon drive away the dangers
+that threaten you."
+
+Sherlock Holmes and I had no difficulty in engaging a bedroom and
+sitting-room at the Crown Inn. They were on the upper floor, and
+from our window we could command a view of the avenue gate, and
+of the inhabited wing of Stoke Moran Manor House. At dusk we saw
+Dr. Grimesby Roylott drive past, his huge form looming up beside
+the little figure of the lad who drove him. The boy had some
+slight difficulty in undoing the heavy iron gates, and we heard
+the hoarse roar of the doctor's voice and saw the fury with which
+he shook his clinched fists at him. The trap drove on, and a few
+minutes later we saw a sudden light spring up among the trees as
+the lamp was lit in one of the sitting-rooms.
+
+"Do you know, Watson," said Holmes as we sat together in the
+gathering darkness, "I have really some scruples as to taking you
+to-night. There is a distinct element of danger."
+
+"Can I be of assistance?"
+
+"Your presence might be invaluable."
+
+"Then I shall certainly come."
+
+"It is very kind of you."
+
+"You speak of danger. You have evidently seen more in these rooms
+than was visible to me."
+
+"No, but I fancy that I may have deduced a little more. I imagine
+that you saw all that I did."
+
+"I saw nothing remarkable save the bell-rope, and what purpose
+that could answer I confess is more than I can imagine."
+
+"You saw the ventilator, too?"
+
+"Yes, but I do not think that it is such a very unusual thing to
+have a small opening between two rooms. It was so small that a
+rat could hardly pass through."
+
+"I knew that we should find a ventilator before ever we came to
+Stoke Moran."
+
+"My dear Holmes!"
+
+"Oh, yes, I did. You remember in her statement she said that her
+sister could smell Dr. Roylott's cigar. Now, of course that
+suggested at once that there must be a communication between the
+two rooms. It could only be a small one, or it would have been
+remarked upon at the coroner's inquiry. I deduced a ventilator."
+
+"But what harm can there be in that?"
+
+"Well, there is at least a curious coincidence of dates. A
+ventilator is made, a cord is hung, and a lady who sleeps in the
+bed dies. Does not that strike you?"
+
+"I cannot as yet see any connection."
+
+"Did you observe anything very peculiar about that bed?"
+
+"No."
+
+"It was clamped to the floor. Did you ever see a bed fastened
+like that before?"
+
+"I cannot say that I have."
+
+"The lady could not move her bed. It must always be in the same
+relative position to the ventilator and to the rope--or so we may
+call it, since it was clearly never meant for a bell-pull."
+
+"Holmes," I cried, "I seem to see dimly what you are hinting at.
+We are only just in time to prevent some subtle and horrible
+crime."
+
+"Subtle enough and horrible enough. When a doctor does go wrong
+he is the first of criminals. He has nerve and he has knowledge.
+Palmer and Pritchard were among the heads of their profession.
+This man strikes even deeper, but I think, Watson, that we shall
+be able to strike deeper still. But we shall have horrors enough
+before the night is over; for goodness' sake let us have a quiet
+pipe and turn our minds for a few hours to something more
+cheerful."
+
+
+About nine o'clock the light among the trees was extinguished,
+and all was dark in the direction of the Manor House. Two hours
+passed slowly away, and then, suddenly, just at the stroke of
+eleven, a single bright light shone out right in front of us.
+
+"That is our signal," said Holmes, springing to his feet; "it
+comes from the middle window."
+
+As we passed out he exchanged a few words with the landlord,
+explaining that we were going on a late visit to an acquaintance,
+and that it was possible that we might spend the night there. A
+moment later we were out on the dark road, a chill wind blowing
+in our faces, and one yellow light twinkling in front of us
+through the gloom to guide us on our sombre errand.
+
+There was little difficulty in entering the grounds, for
+unrepaired breaches gaped in the old park wall. Making our way
+among the trees, we reached the lawn, crossed it, and were about
+to enter through the window when out from a clump of laurel
+bushes there darted what seemed to be a hideous and distorted
+child, who threw itself upon the grass with writhing limbs and
+then ran swiftly across the lawn into the darkness.
+
+"My God!" I whispered; "did you see it?"
+
+Holmes was for the moment as startled as I. His hand closed like
+a vice upon my wrist in his agitation. Then he broke into a low
+laugh and put his lips to my ear.
+
+"It is a nice household," he murmured. "That is the baboon."
+
+I had forgotten the strange pets which the doctor affected. There
+was a cheetah, too; perhaps we might find it upon our shoulders
+at any moment. I confess that I felt easier in my mind when,
+after following Holmes' example and slipping off my shoes, I
+found myself inside the bedroom. My companion noiselessly closed
+the shutters, moved the lamp onto the table, and cast his eyes
+round the room. All was as we had seen it in the daytime. Then
+creeping up to me and making a trumpet of his hand, he whispered
+into my ear again so gently that it was all that I could do to
+distinguish the words:
+
+"The least sound would be fatal to our plans."
+
+I nodded to show that I had heard.
+
+"We must sit without light. He would see it through the
+ventilator."
+
+I nodded again.
+
+"Do not go asleep; your very life may depend upon it. Have your
+pistol ready in case we should need it. I will sit on the side of
+the bed, and you in that chair."
+
+I took out my revolver and laid it on the corner of the table.
+
+Holmes had brought up a long thin cane, and this he placed upon
+the bed beside him. By it he laid the box of matches and the
+stump of a candle. Then he turned down the lamp, and we were left
+in darkness.
+
+How shall I ever forget that dreadful vigil? I could not hear a
+sound, not even the drawing of a breath, and yet I knew that my
+companion sat open-eyed, within a few feet of me, in the same
+state of nervous tension in which I was myself. The shutters cut
+off the least ray of light, and we waited in absolute darkness.
+
+From outside came the occasional cry of a night-bird, and once at
+our very window a long drawn catlike whine, which told us that
+the cheetah was indeed at liberty. Far away we could hear the
+deep tones of the parish clock, which boomed out every quarter of
+an hour. How long they seemed, those quarters! Twelve struck, and
+one and two and three, and still we sat waiting silently for
+whatever might befall.
+
+Suddenly there was the momentary gleam of a light up in the
+direction of the ventilator, which vanished immediately, but was
+succeeded by a strong smell of burning oil and heated metal.
+Someone in the next room had lit a dark-lantern. I heard a gentle
+sound of movement, and then all was silent once more, though the
+smell grew stronger. For half an hour I sat with straining ears.
+Then suddenly another sound became audible--a very gentle,
+soothing sound, like that of a small jet of steam escaping
+continually from a kettle. The instant that we heard it, Holmes
+sprang from the bed, struck a match, and lashed furiously with
+his cane at the bell-pull.
+
+"You see it, Watson?" he yelled. "You see it?"
+
+But I saw nothing. At the moment when Holmes struck the light I
+heard a low, clear whistle, but the sudden glare flashing into my
+weary eyes made it impossible for me to tell what it was at which
+my friend lashed so savagely. I could, however, see that his face
+was deadly pale and filled with horror and loathing. He had
+ceased to strike and was gazing up at the ventilator when
+suddenly there broke from the silence of the night the most
+horrible cry to which I have ever listened. It swelled up louder
+and louder, a hoarse yell of pain and fear and anger all mingled
+in the one dreadful shriek. They say that away down in the
+village, and even in the distant parsonage, that cry raised the
+sleepers from their beds. It struck cold to our hearts, and I
+stood gazing at Holmes, and he at me, until the last echoes of it
+had died away into the silence from which it rose.
+
+"What can it mean?" I gasped.
+
+"It means that it is all over," Holmes answered. "And perhaps,
+after all, it is for the best. Take your pistol, and we will
+enter Dr. Roylott's room."
+
+With a grave face he lit the lamp and led the way down the
+corridor. Twice he struck at the chamber door without any reply
+from within. Then he turned the handle and entered, I at his
+heels, with the cocked pistol in my hand.
+
+It was a singular sight which met our eyes. On the table stood a
+dark-lantern with the shutter half open, throwing a brilliant
+beam of light upon the iron safe, the door of which was ajar.
+Beside this table, on the wooden chair, sat Dr. Grimesby Roylott
+clad in a long grey dressing-gown, his bare ankles protruding
+beneath, and his feet thrust into red heelless Turkish slippers.
+Across his lap lay the short stock with the long lash which we
+had noticed during the day. His chin was cocked upward and his
+eyes were fixed in a dreadful, rigid stare at the corner of the
+ceiling. Round his brow he had a peculiar yellow band, with
+brownish speckles, which seemed to be bound tightly round his
+head. As we entered he made neither sound nor motion.
+
+"The band! the speckled band!" whispered Holmes.
+
+I took a step forward. In an instant his strange headgear began
+to move, and there reared itself from among his hair the squat
+diamond-shaped head and puffed neck of a loathsome serpent.
+
+"It is a swamp adder!" cried Holmes; "the deadliest snake in
+India. He has died within ten seconds of being bitten. Violence
+does, in truth, recoil upon the violent, and the schemer falls
+into the pit which he digs for another. Let us thrust this
+creature back into its den, and we can then remove Miss Stoner to
+some place of shelter and let the county police know what has
+happened."
+
+As he spoke he drew the dog-whip swiftly from the dead man's lap,
+and throwing the noose round the reptile's neck he drew it from
+its horrid perch and, carrying it at arm's length, threw it into
+the iron safe, which he closed upon it.
+
+Such are the true facts of the death of Dr. Grimesby Roylott, of
+Stoke Moran. It is not necessary that I should prolong a
+narrative which has already run to too great a length by telling
+how we broke the sad news to the terrified girl, how we conveyed
+her by the morning train to the care of her good aunt at Harrow,
+of how the slow process of official inquiry came to the
+conclusion that the doctor met his fate while indiscreetly
+playing with a dangerous pet. The little which I had yet to learn
+of the case was told me by Sherlock Holmes as we travelled back
+next day.
+
+"I had," said he, "come to an entirely erroneous conclusion which
+shows, my dear Watson, how dangerous it always is to reason from
+insufficient data. The presence of the gipsies, and the use of
+the word 'band,' which was used by the poor girl, no doubt, to
+explain the appearance which she had caught a hurried glimpse of
+by the light of her match, were sufficient to put me upon an
+entirely wrong scent. I can only claim the merit that I instantly
+reconsidered my position when, however, it became clear to me
+that whatever danger threatened an occupant of the room could not
+come either from the window or the door. My attention was
+speedily drawn, as I have already remarked to you, to this
+ventilator, and to the bell-rope which hung down to the bed. The
+discovery that this was a dummy, and that the bed was clamped to
+the floor, instantly gave rise to the suspicion that the rope was
+there as a bridge for something passing through the hole and
+coming to the bed. The idea of a snake instantly occurred to me,
+and when I coupled it with my knowledge that the doctor was
+furnished with a supply of creatures from India, I felt that I
+was probably on the right track. The idea of using a form of
+poison which could not possibly be discovered by any chemical
+test was just such a one as would occur to a clever and ruthless
+man who had had an Eastern training. The rapidity with which such
+a poison would take effect would also, from his point of view, be
+an advantage. It would be a sharp-eyed coroner, indeed, who could
+distinguish the two little dark punctures which would show where
+the poison fangs had done their work. Then I thought of the
+whistle. Of course he must recall the snake before the morning
+light revealed it to the victim. He had trained it, probably by
+the use of the milk which we saw, to return to him when summoned.
+He would put it through this ventilator at the hour that he
+thought best, with the certainty that it would crawl down the
+rope and land on the bed. It might or might not bite the
+occupant, perhaps she might escape every night for a week, but
+sooner or later she must fall a victim.
+
+"I had come to these conclusions before ever I had entered his
+room. An inspection of his chair showed me that he had been in
+the habit of standing on it, which of course would be necessary
+in order that he should reach the ventilator. The sight of the
+safe, the saucer of milk, and the loop of whipcord were enough to
+finally dispel any doubts which may have remained. The metallic
+clang heard by Miss Stoner was obviously caused by her stepfather
+hastily closing the door of his safe upon its terrible occupant.
+Having once made up my mind, you know the steps which I took in
+order to put the matter to the proof. I heard the creature hiss
+as I have no doubt that you did also, and I instantly lit the
+light and attacked it."
+
+"With the result of driving it through the ventilator."
+
+"And also with the result of causing it to turn upon its master
+at the other side. Some of the blows of my cane came home and
+roused its snakish temper, so that it flew upon the first person
+it saw. In this way I am no doubt indirectly responsible for Dr.
+Grimesby Roylott's death, and I cannot say that it is likely to
+weigh very heavily upon my conscience."
+
+
+
+IX. THE ADVENTURE OF THE ENGINEER'S THUMB
+
+Of all the problems which have been submitted to my friend, Mr.
+Sherlock Holmes, for solution during the years of our intimacy,
+there were only two which I was the means of introducing to his
+notice--that of Mr. Hatherley's thumb, and that of Colonel
+Warburton's madness. Of these the latter may have afforded a
+finer field for an acute and original observer, but the other was
+so strange in its inception and so dramatic in its details that
+it may be the more worthy of being placed upon record, even if it
+gave my friend fewer openings for those deductive methods of
+reasoning by which he achieved such remarkable results. The story
+has, I believe, been told more than once in the newspapers, but,
+like all such narratives, its effect is much less striking when
+set forth en bloc in a single half-column of print than when the
+facts slowly evolve before your own eyes, and the mystery clears
+gradually away as each new discovery furnishes a step which leads
+on to the complete truth. At the time the circumstances made a
+deep impression upon me, and the lapse of two years has hardly
+served to weaken the effect.
+
+It was in the summer of '89, not long after my marriage, that the
+events occurred which I am now about to summarise. I had returned
+to civil practice and had finally abandoned Holmes in his Baker
+Street rooms, although I continually visited him and occasionally
+even persuaded him to forgo his Bohemian habits so far as to come
+and visit us. My practice had steadily increased, and as I
+happened to live at no very great distance from Paddington
+Station, I got a few patients from among the officials. One of
+these, whom I had cured of a painful and lingering disease, was
+never weary of advertising my virtues and of endeavouring to send
+me on every sufferer over whom he might have any influence.
+
+One morning, at a little before seven o'clock, I was awakened by
+the maid tapping at the door to announce that two men had come
+from Paddington and were waiting in the consulting-room. I
+dressed hurriedly, for I knew by experience that railway cases
+were seldom trivial, and hastened downstairs. As I descended, my
+old ally, the guard, came out of the room and closed the door
+tightly behind him.
+
+"I've got him here," he whispered, jerking his thumb over his
+shoulder; "he's all right."
+
+"What is it, then?" I asked, for his manner suggested that it was
+some strange creature which he had caged up in my room.
+
+"It's a new patient," he whispered. "I thought I'd bring him
+round myself; then he couldn't slip away. There he is, all safe
+and sound. I must go now, Doctor; I have my dooties, just the
+same as you." And off he went, this trusty tout, without even
+giving me time to thank him.
+
+I entered my consulting-room and found a gentleman seated by the
+table. He was quietly dressed in a suit of heather tweed with a
+soft cloth cap which he had laid down upon my books. Round one of
+his hands he had a handkerchief wrapped, which was mottled all
+over with bloodstains. He was young, not more than
+five-and-twenty, I should say, with a strong, masculine face; but
+he was exceedingly pale and gave me the impression of a man who
+was suffering from some strong agitation, which it took all his
+strength of mind to control.
+
+"I am sorry to knock you up so early, Doctor," said he, "but I
+have had a very serious accident during the night. I came in by
+train this morning, and on inquiring at Paddington as to where I
+might find a doctor, a worthy fellow very kindly escorted me
+here. I gave the maid a card, but I see that she has left it upon
+the side-table."
+
+I took it up and glanced at it. "Mr. Victor Hatherley, hydraulic
+engineer, 16A, Victoria Street (3rd floor)." That was the name,
+style, and abode of my morning visitor. "I regret that I have
+kept you waiting," said I, sitting down in my library-chair. "You
+are fresh from a night journey, I understand, which is in itself
+a monotonous occupation."
+
+"Oh, my night could not be called monotonous," said he, and
+laughed. He laughed very heartily, with a high, ringing note,
+leaning back in his chair and shaking his sides. All my medical
+instincts rose up against that laugh.
+
+"Stop it!" I cried; "pull yourself together!" and I poured out
+some water from a caraffe.
+
+It was useless, however. He was off in one of those hysterical
+outbursts which come upon a strong nature when some great crisis
+is over and gone. Presently he came to himself once more, very
+weary and pale-looking.
+
+"I have been making a fool of myself," he gasped.
+
+"Not at all. Drink this." I dashed some brandy into the water,
+and the colour began to come back to his bloodless cheeks.
+
+"That's better!" said he. "And now, Doctor, perhaps you would
+kindly attend to my thumb, or rather to the place where my thumb
+used to be."
+
+He unwound the handkerchief and held out his hand. It gave even
+my hardened nerves a shudder to look at it. There were four
+protruding fingers and a horrid red, spongy surface where the
+thumb should have been. It had been hacked or torn right out from
+the roots.
+
+"Good heavens!" I cried, "this is a terrible injury. It must have
+bled considerably."
+
+"Yes, it did. I fainted when it was done, and I think that I must
+have been senseless for a long time. When I came to I found that
+it was still bleeding, so I tied one end of my handkerchief very
+tightly round the wrist and braced it up with a twig."
+
+"Excellent! You should have been a surgeon."
+
+"It is a question of hydraulics, you see, and came within my own
+province."
+
+"This has been done," said I, examining the wound, "by a very
+heavy and sharp instrument."
+
+"A thing like a cleaver," said he.
+
+"An accident, I presume?"
+
+"By no means."
+
+"What! a murderous attack?"
+
+"Very murderous indeed."
+
+"You horrify me."
+
+I sponged the wound, cleaned it, dressed it, and finally covered
+it over with cotton wadding and carbolised bandages. He lay back
+without wincing, though he bit his lip from time to time.
+
+"How is that?" I asked when I had finished.
+
+"Capital! Between your brandy and your bandage, I feel a new man.
+I was very weak, but I have had a good deal to go through."
+
+"Perhaps you had better not speak of the matter. It is evidently
+trying to your nerves."
+
+"Oh, no, not now. I shall have to tell my tale to the police;
+but, between ourselves, if it were not for the convincing
+evidence of this wound of mine, I should be surprised if they
+believed my statement, for it is a very extraordinary one, and I
+have not much in the way of proof with which to back it up; and,
+even if they believe me, the clues which I can give them are so
+vague that it is a question whether justice will be done."
+
+"Ha!" cried I, "if it is anything in the nature of a problem
+which you desire to see solved, I should strongly recommend you
+to come to my friend, Mr. Sherlock Holmes, before you go to the
+official police."
+
+"Oh, I have heard of that fellow," answered my visitor, "and I
+should be very glad if he would take the matter up, though of
+course I must use the official police as well. Would you give me
+an introduction to him?"
+
+"I'll do better. I'll take you round to him myself."
+
+"I should be immensely obliged to you."
+
+"We'll call a cab and go together. We shall just be in time to
+have a little breakfast with him. Do you feel equal to it?"
+
+"Yes; I shall not feel easy until I have told my story."
+
+"Then my servant will call a cab, and I shall be with you in an
+instant." I rushed upstairs, explained the matter shortly to my
+wife, and in five minutes was inside a hansom, driving with my
+new acquaintance to Baker Street.
+
+Sherlock Holmes was, as I expected, lounging about his
+sitting-room in his dressing-gown, reading the agony column of The
+Times and smoking his before-breakfast pipe, which was composed
+of all the plugs and dottles left from his smokes of the day
+before, all carefully dried and collected on the corner of the
+mantelpiece. He received us in his quietly genial fashion,
+ordered fresh rashers and eggs, and joined us in a hearty meal.
+When it was concluded he settled our new acquaintance upon the
+sofa, placed a pillow beneath his head, and laid a glass of
+brandy and water within his reach.
+
+"It is easy to see that your experience has been no common one,
+Mr. Hatherley," said he. "Pray, lie down there and make yourself
+absolutely at home. Tell us what you can, but stop when you are
+tired and keep up your strength with a little stimulant."
+
+"Thank you," said my patient, "but I have felt another man since
+the doctor bandaged me, and I think that your breakfast has
+completed the cure. I shall take up as little of your valuable
+time as possible, so I shall start at once upon my peculiar
+experiences."
+
+Holmes sat in his big armchair with the weary, heavy-lidded
+expression which veiled his keen and eager nature, while I sat
+opposite to him, and we listened in silence to the strange story
+which our visitor detailed to us.
+
+"You must know," said he, "that I am an orphan and a bachelor,
+residing alone in lodgings in London. By profession I am a
+hydraulic engineer, and I have had considerable experience of my
+work during the seven years that I was apprenticed to Venner &
+Matheson, the well-known firm, of Greenwich. Two years ago,
+having served my time, and having also come into a fair sum of
+money through my poor father's death, I determined to start in
+business for myself and took professional chambers in Victoria
+Street.
+
+"I suppose that everyone finds his first independent start in
+business a dreary experience. To me it has been exceptionally so.
+During two years I have had three consultations and one small
+job, and that is absolutely all that my profession has brought
+me. My gross takings amount to 27 pounds 10s. Every day, from
+nine in the morning until four in the afternoon, I waited in my
+little den, until at last my heart began to sink, and I came to
+believe that I should never have any practice at all.
+
+"Yesterday, however, just as I was thinking of leaving the
+office, my clerk entered to say there was a gentleman waiting who
+wished to see me upon business. He brought up a card, too, with
+the name of 'Colonel Lysander Stark' engraved upon it. Close at
+his heels came the colonel himself, a man rather over the middle
+size, but of an exceeding thinness. I do not think that I have
+ever seen so thin a man. His whole face sharpened away into nose
+and chin, and the skin of his cheeks was drawn quite tense over
+his outstanding bones. Yet this emaciation seemed to be his
+natural habit, and due to no disease, for his eye was bright, his
+step brisk, and his bearing assured. He was plainly but neatly
+dressed, and his age, I should judge, would be nearer forty than
+thirty.
+
+"'Mr. Hatherley?' said he, with something of a German accent.
+'You have been recommended to me, Mr. Hatherley, as being a man
+who is not only proficient in his profession but is also discreet
+and capable of preserving a secret.'
+
+"I bowed, feeling as flattered as any young man would at such an
+address. 'May I ask who it was who gave me so good a character?'
+
+"'Well, perhaps it is better that I should not tell you that just
+at this moment. I have it from the same source that you are both
+an orphan and a bachelor and are residing alone in London.'
+
+"'That is quite correct,' I answered; 'but you will excuse me if
+I say that I cannot see how all this bears upon my professional
+qualifications. I understand that it was on a professional matter
+that you wished to speak to me?'
+
+"'Undoubtedly so. But you will find that all I say is really to
+the point. I have a professional commission for you, but absolute
+secrecy is quite essential--absolute secrecy, you understand, and
+of course we may expect that more from a man who is alone than
+from one who lives in the bosom of his family.'
+
+"'If I promise to keep a secret,' said I, 'you may absolutely
+depend upon my doing so.'
+
+"He looked very hard at me as I spoke, and it seemed to me that I
+had never seen so suspicious and questioning an eye.
+
+"'Do you promise, then?' said he at last.
+
+"'Yes, I promise.'
+
+"'Absolute and complete silence before, during, and after? No
+reference to the matter at all, either in word or writing?'
+
+"'I have already given you my word.'
+
+"'Very good.' He suddenly sprang up, and darting like lightning
+across the room he flung open the door. The passage outside was
+empty.
+
+"'That's all right,' said he, coming back. 'I know that clerks are
+sometimes curious as to their master's affairs. Now we can talk
+in safety.' He drew up his chair very close to mine and began to
+stare at me again with the same questioning and thoughtful look.
+
+"A feeling of repulsion, and of something akin to fear had begun
+to rise within me at the strange antics of this fleshless man.
+Even my dread of losing a client could not restrain me from
+showing my impatience.
+
+"'I beg that you will state your business, sir,' said I; 'my time
+is of value.' Heaven forgive me for that last sentence, but the
+words came to my lips.
+
+"'How would fifty guineas for a night's work suit you?' he asked.
+
+"'Most admirably.'
+
+"'I say a night's work, but an hour's would be nearer the mark. I
+simply want your opinion about a hydraulic stamping machine which
+has got out of gear. If you show us what is wrong we shall soon
+set it right ourselves. What do you think of such a commission as
+that?'
+
+"'The work appears to be light and the pay munificent.'
+
+"'Precisely so. We shall want you to come to-night by the last
+train.'
+
+"'Where to?'
+
+"'To Eyford, in Berkshire. It is a little place near the borders
+of Oxfordshire, and within seven miles of Reading. There is a
+train from Paddington which would bring you there at about
+11:15.'
+
+"'Very good.'
+
+"'I shall come down in a carriage to meet you.'
+
+"'There is a drive, then?'
+
+"'Yes, our little place is quite out in the country. It is a good
+seven miles from Eyford Station.'
+
+"'Then we can hardly get there before midnight. I suppose there
+would be no chance of a train back. I should be compelled to stop
+the night.'
+
+"'Yes, we could easily give you a shake-down.'
+
+"'That is very awkward. Could I not come at some more convenient
+hour?'
+
+"'We have judged it best that you should come late. It is to
+recompense you for any inconvenience that we are paying to you, a
+young and unknown man, a fee which would buy an opinion from the
+very heads of your profession. Still, of course, if you would
+like to draw out of the business, there is plenty of time to do
+so.'
+
+"I thought of the fifty guineas, and of how very useful they
+would be to me. 'Not at all,' said I, 'I shall be very happy to
+accommodate myself to your wishes. I should like, however, to
+understand a little more clearly what it is that you wish me to
+do.'
+
+"'Quite so. It is very natural that the pledge of secrecy which
+we have exacted from you should have aroused your curiosity. I
+have no wish to commit you to anything without your having it all
+laid before you. I suppose that we are absolutely safe from
+eavesdroppers?'
+
+"'Entirely.'
+
+"'Then the matter stands thus. You are probably aware that
+fuller's-earth is a valuable product, and that it is only found
+in one or two places in England?'
+
+"'I have heard so.'
+
+"'Some little time ago I bought a small place--a very small
+place--within ten miles of Reading. I was fortunate enough to
+discover that there was a deposit of fuller's-earth in one of my
+fields. On examining it, however, I found that this deposit was a
+comparatively small one, and that it formed a link between two
+very much larger ones upon the right and left--both of them,
+however, in the grounds of my neighbours. These good people were
+absolutely ignorant that their land contained that which was
+quite as valuable as a gold-mine. Naturally, it was to my
+interest to buy their land before they discovered its true value,
+but unfortunately I had no capital by which I could do this. I
+took a few of my friends into the secret, however, and they
+suggested that we should quietly and secretly work our own little
+deposit and that in this way we should earn the money which would
+enable us to buy the neighbouring fields. This we have now been
+doing for some time, and in order to help us in our operations we
+erected a hydraulic press. This press, as I have already
+explained, has got out of order, and we wish your advice upon the
+subject. We guard our secret very jealously, however, and if it
+once became known that we had hydraulic engineers coming to our
+little house, it would soon rouse inquiry, and then, if the facts
+came out, it would be good-bye to any chance of getting these
+fields and carrying out our plans. That is why I have made you
+promise me that you will not tell a human being that you are
+going to Eyford to-night. I hope that I make it all plain?'
+
+"'I quite follow you,' said I. 'The only point which I could not
+quite understand was what use you could make of a hydraulic press
+in excavating fuller's-earth, which, as I understand, is dug out
+like gravel from a pit.'
+
+"'Ah!' said he carelessly, 'we have our own process. We compress
+the earth into bricks, so as to remove them without revealing
+what they are. But that is a mere detail. I have taken you fully
+into my confidence now, Mr. Hatherley, and I have shown you how I
+trust you.' He rose as he spoke. 'I shall expect you, then, at
+Eyford at 11:15.'
+
+"'I shall certainly be there.'
+
+"'And not a word to a soul.' He looked at me with a last long,
+questioning gaze, and then, pressing my hand in a cold, dank
+grasp, he hurried from the room.
+
+"Well, when I came to think it all over in cool blood I was very
+much astonished, as you may both think, at this sudden commission
+which had been intrusted to me. On the one hand, of course, I was
+glad, for the fee was at least tenfold what I should have asked
+had I set a price upon my own services, and it was possible that
+this order might lead to other ones. On the other hand, the face
+and manner of my patron had made an unpleasant impression upon
+me, and I could not think that his explanation of the
+fuller's-earth was sufficient to explain the necessity for my
+coming at midnight, and his extreme anxiety lest I should tell
+anyone of my errand. However, I threw all fears to the winds, ate
+a hearty supper, drove to Paddington, and started off, having
+obeyed to the letter the injunction as to holding my tongue.
+
+"At Reading I had to change not only my carriage but my station.
+However, I was in time for the last train to Eyford, and I
+reached the little dim-lit station after eleven o'clock. I was the
+only passenger who got out there, and there was no one upon the
+platform save a single sleepy porter with a lantern. As I passed
+out through the wicket gate, however, I found my acquaintance of
+the morning waiting in the shadow upon the other side. Without a
+word he grasped my arm and hurried me into a carriage, the door
+of which was standing open. He drew up the windows on either
+side, tapped on the wood-work, and away we went as fast as the
+horse could go."
+
+"One horse?" interjected Holmes.
+
+"Yes, only one."
+
+"Did you observe the colour?"
+
+"Yes, I saw it by the side-lights when I was stepping into the
+carriage. It was a chestnut."
+
+"Tired-looking or fresh?"
+
+"Oh, fresh and glossy."
+
+"Thank you. I am sorry to have interrupted you. Pray continue
+your most interesting statement."
+
+"Away we went then, and we drove for at least an hour. Colonel
+Lysander Stark had said that it was only seven miles, but I
+should think, from the rate that we seemed to go, and from the
+time that we took, that it must have been nearer twelve. He sat
+at my side in silence all the time, and I was aware, more than
+once when I glanced in his direction, that he was looking at me
+with great intensity. The country roads seem to be not very good
+in that part of the world, for we lurched and jolted terribly. I
+tried to look out of the windows to see something of where we
+were, but they were made of frosted glass, and I could make out
+nothing save the occasional bright blur of a passing light. Now
+and then I hazarded some remark to break the monotony of the
+journey, but the colonel answered only in monosyllables, and the
+conversation soon flagged. At last, however, the bumping of the
+road was exchanged for the crisp smoothness of a gravel-drive,
+and the carriage came to a stand. Colonel Lysander Stark sprang
+out, and, as I followed after him, pulled me swiftly into a porch
+which gaped in front of us. We stepped, as it were, right out of
+the carriage and into the hall, so that I failed to catch the
+most fleeting glance of the front of the house. The instant that
+I had crossed the threshold the door slammed heavily behind us,
+and I heard faintly the rattle of the wheels as the carriage
+drove away.
+
+"It was pitch dark inside the house, and the colonel fumbled
+about looking for matches and muttering under his breath.
+Suddenly a door opened at the other end of the passage, and a
+long, golden bar of light shot out in our direction. It grew
+broader, and a woman appeared with a lamp in her hand, which she
+held above her head, pushing her face forward and peering at us.
+I could see that she was pretty, and from the gloss with which
+the light shone upon her dark dress I knew that it was a rich
+material. She spoke a few words in a foreign tongue in a tone as
+though asking a question, and when my companion answered in a
+gruff monosyllable she gave such a start that the lamp nearly
+fell from her hand. Colonel Stark went up to her, whispered
+something in her ear, and then, pushing her back into the room
+from whence she had come, he walked towards me again with the
+lamp in his hand.
+
+"'Perhaps you will have the kindness to wait in this room for a
+few minutes,' said he, throwing open another door. It was a
+quiet, little, plainly furnished room, with a round table in the
+centre, on which several German books were scattered. Colonel
+Stark laid down the lamp on the top of a harmonium beside the
+door. 'I shall not keep you waiting an instant,' said he, and
+vanished into the darkness.
+
+"I glanced at the books upon the table, and in spite of my
+ignorance of German I could see that two of them were treatises
+on science, the others being volumes of poetry. Then I walked
+across to the window, hoping that I might catch some glimpse of
+the country-side, but an oak shutter, heavily barred, was folded
+across it. It was a wonderfully silent house. There was an old
+clock ticking loudly somewhere in the passage, but otherwise
+everything was deadly still. A vague feeling of uneasiness began
+to steal over me. Who were these German people, and what were
+they doing living in this strange, out-of-the-way place? And
+where was the place? I was ten miles or so from Eyford, that was
+all I knew, but whether north, south, east, or west I had no
+idea. For that matter, Reading, and possibly other large towns,
+were within that radius, so the place might not be so secluded,
+after all. Yet it was quite certain, from the absolute stillness,
+that we were in the country. I paced up and down the room,
+humming a tune under my breath to keep up my spirits and feeling
+that I was thoroughly earning my fifty-guinea fee.
+
+"Suddenly, without any preliminary sound in the midst of the
+utter stillness, the door of my room swung slowly open. The woman
+was standing in the aperture, the darkness of the hall behind
+her, the yellow light from my lamp beating upon her eager and
+beautiful face. I could see at a glance that she was sick with
+fear, and the sight sent a chill to my own heart. She held up one
+shaking finger to warn me to be silent, and she shot a few
+whispered words of broken English at me, her eyes glancing back,
+like those of a frightened horse, into the gloom behind her.
+
+"'I would go,' said she, trying hard, as it seemed to me, to
+speak calmly; 'I would go. I should not stay here. There is no
+good for you to do.'
+
+"'But, madam,' said I, 'I have not yet done what I came for. I
+cannot possibly leave until I have seen the machine.'
+
+"'It is not worth your while to wait,' she went on. 'You can pass
+through the door; no one hinders.' And then, seeing that I smiled
+and shook my head, she suddenly threw aside her constraint and
+made a step forward, with her hands wrung together. 'For the love
+of Heaven!' she whispered, 'get away from here before it is too
+late!'
+
+"But I am somewhat headstrong by nature, and the more ready to
+engage in an affair when there is some obstacle in the way. I
+thought of my fifty-guinea fee, of my wearisome journey, and of
+the unpleasant night which seemed to be before me. Was it all to
+go for nothing? Why should I slink away without having carried
+out my commission, and without the payment which was my due? This
+woman might, for all I knew, be a monomaniac. With a stout
+bearing, therefore, though her manner had shaken me more than I
+cared to confess, I still shook my head and declared my intention
+of remaining where I was. She was about to renew her entreaties
+when a door slammed overhead, and the sound of several footsteps
+was heard upon the stairs. She listened for an instant, threw up
+her hands with a despairing gesture, and vanished as suddenly and
+as noiselessly as she had come.
+
+"The newcomers were Colonel Lysander Stark and a short thick man
+with a chinchilla beard growing out of the creases of his double
+chin, who was introduced to me as Mr. Ferguson.
+
+"'This is my secretary and manager,' said the colonel. 'By the
+way, I was under the impression that I left this door shut just
+now. I fear that you have felt the draught.'
+
+"'On the contrary,' said I, 'I opened the door myself because I
+felt the room to be a little close.'
+
+"He shot one of his suspicious looks at me. 'Perhaps we had
+better proceed to business, then,' said he. 'Mr. Ferguson and I
+will take you up to see the machine.'
+
+"'I had better put my hat on, I suppose.'
+
+"'Oh, no, it is in the house.'
+
+"'What, you dig fuller's-earth in the house?'
+
+"'No, no. This is only where we compress it. But never mind that.
+All we wish you to do is to examine the machine and to let us
+know what is wrong with it.'
+
+"We went upstairs together, the colonel first with the lamp, the
+fat manager and I behind him. It was a labyrinth of an old house,
+with corridors, passages, narrow winding staircases, and little
+low doors, the thresholds of which were hollowed out by the
+generations who had crossed them. There were no carpets and no
+signs of any furniture above the ground floor, while the plaster
+was peeling off the walls, and the damp was breaking through in
+green, unhealthy blotches. I tried to put on as unconcerned an
+air as possible, but I had not forgotten the warnings of the
+lady, even though I disregarded them, and I kept a keen eye upon
+my two companions. Ferguson appeared to be a morose and silent
+man, but I could see from the little that he said that he was at
+least a fellow-countryman.
+
+"Colonel Lysander Stark stopped at last before a low door, which
+he unlocked. Within was a small, square room, in which the three
+of us could hardly get at one time. Ferguson remained outside,
+and the colonel ushered me in.
+
+"'We are now,' said he, 'actually within the hydraulic press, and
+it would be a particularly unpleasant thing for us if anyone were
+to turn it on. The ceiling of this small chamber is really the
+end of the descending piston, and it comes down with the force of
+many tons upon this metal floor. There are small lateral columns
+of water outside which receive the force, and which transmit and
+multiply it in the manner which is familiar to you. The machine
+goes readily enough, but there is some stiffness in the working
+of it, and it has lost a little of its force. Perhaps you will
+have the goodness to look it over and to show us how we can set
+it right.'
+
+"I took the lamp from him, and I examined the machine very
+thoroughly. It was indeed a gigantic one, and capable of
+exercising enormous pressure. When I passed outside, however, and
+pressed down the levers which controlled it, I knew at once by
+the whishing sound that there was a slight leakage, which allowed
+a regurgitation of water through one of the side cylinders. An
+examination showed that one of the india-rubber bands which was
+round the head of a driving-rod had shrunk so as not quite to
+fill the socket along which it worked. This was clearly the cause
+of the loss of power, and I pointed it out to my companions, who
+followed my remarks very carefully and asked several practical
+questions as to how they should proceed to set it right. When I
+had made it clear to them, I returned to the main chamber of the
+machine and took a good look at it to satisfy my own curiosity.
+It was obvious at a glance that the story of the fuller's-earth
+was the merest fabrication, for it would be absurd to suppose
+that so powerful an engine could be designed for so inadequate a
+purpose. The walls were of wood, but the floor consisted of a
+large iron trough, and when I came to examine it I could see a
+crust of metallic deposit all over it. I had stooped and was
+scraping at this to see exactly what it was when I heard a
+muttered exclamation in German and saw the cadaverous face of the
+colonel looking down at me.
+
+"'What are you doing there?' he asked.
+
+"I felt angry at having been tricked by so elaborate a story as
+that which he had told me. 'I was admiring your fuller's-earth,'
+said I; 'I think that I should be better able to advise you as to
+your machine if I knew what the exact purpose was for which it
+was used.'
+
+"The instant that I uttered the words I regretted the rashness of
+my speech. His face set hard, and a baleful light sprang up in
+his grey eyes.
+
+"'Very well,' said he, 'you shall know all about the machine.' He
+took a step backward, slammed the little door, and turned the key
+in the lock. I rushed towards it and pulled at the handle, but it
+was quite secure, and did not give in the least to my kicks and
+shoves. 'Hullo!' I yelled. 'Hullo! Colonel! Let me out!'
+
+"And then suddenly in the silence I heard a sound which sent my
+heart into my mouth. It was the clank of the levers and the swish
+of the leaking cylinder. He had set the engine at work. The lamp
+still stood upon the floor where I had placed it when examining
+the trough. By its light I saw that the black ceiling was coming
+down upon me, slowly, jerkily, but, as none knew better than
+myself, with a force which must within a minute grind me to a
+shapeless pulp. I threw myself, screaming, against the door, and
+dragged with my nails at the lock. I implored the colonel to let
+me out, but the remorseless clanking of the levers drowned my
+cries. The ceiling was only a foot or two above my head, and with
+my hand upraised I could feel its hard, rough surface. Then it
+flashed through my mind that the pain of my death would depend
+very much upon the position in which I met it. If I lay on my
+face the weight would come upon my spine, and I shuddered to
+think of that dreadful snap. Easier the other way, perhaps; and
+yet, had I the nerve to lie and look up at that deadly black
+shadow wavering down upon me? Already I was unable to stand
+erect, when my eye caught something which brought a gush of hope
+back to my heart.
+
+"I have said that though the floor and ceiling were of iron, the
+walls were of wood. As I gave a last hurried glance around, I saw
+a thin line of yellow light between two of the boards, which
+broadened and broadened as a small panel was pushed backward. For
+an instant I could hardly believe that here was indeed a door
+which led away from death. The next instant I threw myself
+through, and lay half-fainting upon the other side. The panel had
+closed again behind me, but the crash of the lamp, and a few
+moments afterwards the clang of the two slabs of metal, told me
+how narrow had been my escape.
+
+"I was recalled to myself by a frantic plucking at my wrist, and
+I found myself lying upon the stone floor of a narrow corridor,
+while a woman bent over me and tugged at me with her left hand,
+while she held a candle in her right. It was the same good friend
+whose warning I had so foolishly rejected.
+
+"'Come! come!' she cried breathlessly. 'They will be here in a
+moment. They will see that you are not there. Oh, do not waste
+the so-precious time, but come!'
+
+"This time, at least, I did not scorn her advice. I staggered to
+my feet and ran with her along the corridor and down a winding
+stair. The latter led to another broad passage, and just as we
+reached it we heard the sound of running feet and the shouting of
+two voices, one answering the other from the floor on which  we
+were and from the one beneath. My guide stopped and looked about
+her like one  who is at her wit's end. Then she threw open a door
+which led into a bedroom, through the window of which the moon
+was shining brightly.
+
+"'It is your only chance,' said she. 'It is high, but it may be
+that you can jump it.'
+
+"As she spoke a light sprang into view at the further end of the
+passage, and I saw the lean figure of Colonel Lysander Stark
+rushing forward with a lantern in one hand and a weapon like a
+butcher's cleaver in the other. I rushed across the bedroom,
+flung open the window, and looked out. How quiet and sweet and
+wholesome the garden looked in the moonlight, and it could not be
+more than thirty feet down. I clambered out upon the sill, but I
+hesitated to jump until I should have heard what passed between
+my saviour and the ruffian who pursued me. If she were ill-used,
+then at any risks I was determined to go back to her assistance.
+The thought had hardly flashed through my mind before he was at
+the door, pushing his way past her; but she threw her arms round
+him and tried to hold him back.
+
+"'Fritz! Fritz!' she cried in English, 'remember your promise
+after the last time. You said it should not be again. He will be
+silent! Oh, he will be silent!'
+
+"'You are mad, Elise!' he shouted, struggling to break away from
+her. 'You will be the ruin of us. He has seen too much. Let me
+pass, I say!' He dashed her to one side, and, rushing to the
+window, cut at me with his heavy weapon. I had let myself go, and
+was hanging by the hands to the sill, when his blow fell. I was
+conscious of a dull pain, my grip loosened, and I fell into the
+garden below.
+
+"I was shaken but not hurt by the fall; so I picked myself up and
+rushed off among the bushes as hard as I could run, for I
+understood that I was far from being out of danger yet. Suddenly,
+however, as I ran, a deadly dizziness and sickness came over me.
+I glanced down at my hand, which was throbbing painfully, and
+then, for the first time, saw that my thumb had been cut off and
+that the blood was pouring from my wound. I endeavoured to tie my
+handkerchief round it, but there came a sudden buzzing in my
+ears, and next moment I fell in a dead faint among the
+rose-bushes.
+
+"How long I remained unconscious I cannot tell. It must have been
+a very long time, for the moon had sunk, and a bright morning was
+breaking when I came to myself. My clothes were all sodden with
+dew, and my coat-sleeve was drenched with blood from my wounded
+thumb. The smarting of it recalled in an instant all the
+particulars of my night's adventure, and I sprang to my feet with
+the feeling that I might hardly yet be safe from my pursuers. But
+to my astonishment, when I came to look round me, neither house
+nor garden were to be seen. I had been lying in an angle of the
+hedge close by the highroad, and just a little lower down was a
+long building, which proved, upon my approaching it, to be the
+very station at which I had arrived upon the previous night. Were
+it not for the ugly wound upon my hand, all that had passed
+during those dreadful hours might have been an evil dream.
+
+"Half dazed, I went into the station and asked about the morning
+train. There would be one to Reading in less than an hour. The
+same porter was on duty, I found, as had been there when I
+arrived. I inquired of him whether he had ever heard of Colonel
+Lysander Stark. The name was strange to him. Had he observed a
+carriage the night before waiting for me? No, he had not. Was
+there a police-station anywhere near? There was one about three
+miles off.
+
+"It was too far for me to go, weak and ill as I was. I determined
+to wait until I got back to town before telling my story to the
+police. It was a little past six when I arrived, so I went first
+to have my wound dressed, and then the doctor was kind enough to
+bring me along here. I put the case into your hands and shall do
+exactly what you advise."
+
+We both sat in silence for some little time after listening to
+this extraordinary narrative. Then Sherlock Holmes pulled down
+from the shelf one of the ponderous commonplace books in which he
+placed his cuttings.
+
+"Here is an advertisement which will interest you," said he. "It
+appeared in all the papers about a year ago. Listen to this:
+'Lost, on the 9th inst., Mr. Jeremiah Hayling, aged
+twenty-six, a hydraulic engineer. Left his lodgings at ten
+o'clock at night, and has not been heard of since. Was
+dressed in,' etc., etc. Ha! That represents the last time that
+the colonel needed to have his machine overhauled, I fancy."
+
+"Good heavens!" cried my patient. "Then that explains what the
+girl said."
+
+"Undoubtedly. It is quite clear that the colonel was a cool and
+desperate man, who was absolutely determined that nothing should
+stand in the way of his little game, like those out-and-out
+pirates who will leave no survivor from a captured ship. Well,
+every moment now is precious, so if you feel equal to it we shall
+go down to Scotland Yard at once as a preliminary to starting for
+Eyford."
+
+Some three hours or so afterwards we were all in the train
+together, bound from Reading to the little Berkshire village.
+There were Sherlock Holmes, the hydraulic engineer, Inspector
+Bradstreet, of Scotland Yard, a plain-clothes man, and myself.
+Bradstreet had spread an ordnance map of the county out upon the
+seat and was busy with his compasses drawing a circle with Eyford
+for its centre.
+
+"There you are," said he. "That circle is drawn at a radius of
+ten miles from the village. The place we want must be somewhere
+near that line. You said ten miles, I think, sir."
+
+"It was an hour's good drive."
+
+"And you think that they brought you back all that way when you
+were unconscious?"
+
+"They must have done so. I have a confused memory, too, of having
+been lifted and conveyed somewhere."
+
+"What I cannot understand," said I, "is why they should have
+spared you when they found you lying fainting in the garden.
+Perhaps the villain was softened by the woman's entreaties."
+
+"I hardly think that likely. I never saw a more inexorable face
+in my life."
+
+"Oh, we shall soon clear up all that," said Bradstreet. "Well, I
+have drawn my circle, and I only wish I knew at what point upon
+it the folk that we are in search of are to be found."
+
+"I think I could lay my finger on it," said Holmes quietly.
+
+"Really, now!" cried the inspector, "you have formed your
+opinion! Come, now, we shall see who agrees with you. I say it is
+south, for the country is more deserted there."
+
+"And I say east," said my patient.
+
+"I am for west," remarked the plain-clothes man. "There are
+several quiet little villages up there."
+
+"And I am for north," said I, "because there are no hills there,
+and our friend says that he did not notice the carriage go up
+any."
+
+"Come," cried the inspector, laughing; "it's a very pretty
+diversity of opinion. We have boxed the compass among us. Who do
+you give your casting vote to?"
+
+"You are all wrong."
+
+"But we can't all be."
+
+"Oh, yes, you can. This is my point." He placed his finger in the
+centre of the circle. "This is where we shall find them."
+
+"But the twelve-mile drive?" gasped Hatherley.
+
+"Six out and six back. Nothing simpler. You say yourself that the
+horse was fresh and glossy when you got in. How could it be that
+if it had gone twelve miles over heavy roads?"
+
+"Indeed, it is a likely ruse enough," observed Bradstreet
+thoughtfully. "Of course there can be no doubt as to the nature
+of this gang."
+
+"None at all," said Holmes. "They are coiners on a large scale,
+and have used the machine to form the amalgam which has taken the
+place of silver."
+
+"We have known for some time that a clever gang was at work,"
+said the inspector. "They have been turning out half-crowns by
+the thousand. We even traced them as far as Reading, but could
+get no farther, for they had covered their traces in a way that
+showed that they were very old hands. But now, thanks to this
+lucky chance, I think that we have got them right enough."
+
+But the inspector was mistaken, for those criminals were not
+destined to fall into the hands of justice. As we rolled into
+Eyford Station we saw a gigantic column of smoke which streamed
+up from behind a small clump of trees in the neighbourhood and
+hung like an immense ostrich feather over the landscape.
+
+"A house on fire?" asked Bradstreet as the train steamed off
+again on its way.
+
+"Yes, sir!" said the station-master.
+
+"When did it break out?"
+
+"I hear that it was during the night, sir, but it has got worse,
+and the whole place is in a blaze."
+
+"Whose house is it?"
+
+"Dr. Becher's."
+
+"Tell me," broke in the engineer, "is Dr. Becher a German, very
+thin, with a long, sharp nose?"
+
+The station-master laughed heartily. "No, sir, Dr. Becher is an
+Englishman, and there isn't a man in the parish who has a
+better-lined waistcoat. But he has a gentleman staying with him,
+a patient, as I understand, who is a foreigner, and he looks as
+if a little good Berkshire beef would do him no harm."
+
+The station-master had not finished his speech before we were all
+hastening in the direction of the fire. The road topped a low
+hill, and there was a great widespread whitewashed building in
+front of us, spouting fire at every chink and window, while in
+the garden in front three fire-engines were vainly striving to
+keep the flames under.
+
+"That's it!" cried Hatherley, in intense excitement. "There is
+the gravel-drive, and there are the rose-bushes where I lay. That
+second window is the one that I jumped from."
+
+"Well, at least," said Holmes, "you have had your revenge upon
+them. There can be no question that it was your oil-lamp which,
+when it was crushed in the press, set fire to the wooden walls,
+though no doubt they were too excited in the chase after you to
+observe it at the time. Now keep your eyes open in this crowd for
+your friends of last night, though I very much fear that they are
+a good hundred miles off by now."
+
+And Holmes' fears came to be realised, for from that day to this
+no word has ever been heard either of the beautiful woman, the
+sinister German, or the morose Englishman. Early that morning a
+peasant had met a cart containing several people and some very
+bulky boxes driving rapidly in the direction of Reading, but
+there all traces of the fugitives disappeared, and even Holmes'
+ingenuity failed ever to discover the least clue as to their
+whereabouts.
+
+The firemen had been much perturbed at the strange arrangements
+which they had found within, and still more so by discovering a
+newly severed human thumb upon a window-sill of the second floor.
+About sunset, however, their efforts were at last successful, and
+they subdued the flames, but not before the roof had fallen in,
+and the whole place been reduced to such absolute ruin that, save
+some twisted cylinders and iron piping, not a trace remained of
+the machinery which had cost our unfortunate acquaintance so
+dearly. Large masses of nickel and of tin were discovered stored
+in an out-house, but no coins were to be found, which may have
+explained the presence of those bulky boxes which have been
+already referred to.
+
+How our hydraulic engineer had been conveyed from the garden to
+the spot where he recovered his senses might have remained
+forever a mystery were it not for the soft mould, which told us a
+very plain tale. He had evidently been carried down by two
+persons, one of whom had remarkably small feet and the other
+unusually large ones. On the whole, it was most probable that the
+silent Englishman, being less bold or less murderous than his
+companion, had assisted the woman to bear the unconscious man out
+of the way of danger.
+
+"Well," said our engineer ruefully as we took our seats to return
+once more to London, "it has been a pretty business for me! I
+have lost my thumb and I have lost a fifty-guinea fee, and what
+have I gained?"
+
+"Experience," said Holmes, laughing. "Indirectly it may be of
+value, you know; you have only to put it into words to gain the
+reputation of being excellent company for the remainder of your
+existence."
+
+
+
+X. THE ADVENTURE OF THE NOBLE BACHELOR
+
+The Lord St. Simon marriage, and its curious termination, have
+long ceased to be a subject of interest in those exalted circles
+in which the unfortunate bridegroom moves. Fresh scandals have
+eclipsed it, and their more piquant details have drawn the
+gossips away from this four-year-old drama. As I have reason to
+believe, however, that the full facts have never been revealed to
+the general public, and as my friend Sherlock Holmes had a
+considerable share in clearing the matter up, I feel that no
+memoir of him would be complete without some little sketch of
+this remarkable episode.
+
+It was a few weeks before my own marriage, during the days when I
+was still sharing rooms with Holmes in Baker Street, that he came
+home from an afternoon stroll to find a letter on the table
+waiting for him. I had remained indoors all day, for the weather
+had taken a sudden turn to rain, with high autumnal winds, and
+the Jezail bullet which I had brought back in one of my limbs as
+a relic of my Afghan campaign throbbed with dull persistence.
+With my body in one easy-chair and my legs upon another, I had
+surrounded myself with a cloud of newspapers until at last,
+saturated with the news of the day, I tossed them all aside and
+lay listless, watching the huge crest and monogram upon the
+envelope upon the table and wondering lazily who my friend's
+noble correspondent could be.
+
+"Here is a very fashionable epistle," I remarked as he entered.
+"Your morning letters, if I remember right, were from a
+fish-monger and a tide-waiter."
+
+"Yes, my correspondence has certainly the charm of variety," he
+answered, smiling, "and the humbler are usually the more
+interesting. This looks like one of those unwelcome social
+summonses which call upon a man either to be bored or to lie."
+
+He broke the seal and glanced over the contents.
+
+"Oh, come, it may prove to be something of interest, after all."
+
+"Not social, then?"
+
+"No, distinctly professional."
+
+"And from a noble client?"
+
+"One of the highest in England."
+
+"My dear fellow, I congratulate you."
+
+"I assure you, Watson, without affectation, that the status of my
+client is a matter of less moment to me than the interest of his
+case. It is just possible, however, that that also may not be
+wanting in this new investigation. You have been reading the
+papers diligently of late, have you not?"
+
+"It looks like it," said I ruefully, pointing to a huge bundle in
+the corner. "I have had nothing else to do."
+
+"It is fortunate, for you will perhaps be able to post me up. I
+read nothing except the criminal news and the agony column. The
+latter is always instructive. But if you have followed recent
+events so closely you must have read about Lord St. Simon and his
+wedding?"
+
+"Oh, yes, with the deepest interest."
+
+"That is well. The letter which I hold in my hand is from Lord
+St. Simon. I will read it to you, and in return you must turn
+over these papers and let me have whatever bears upon the matter.
+This is what he says:
+
+"'MY DEAR MR. SHERLOCK HOLMES:--Lord Backwater tells me that I
+may place implicit reliance upon your judgment and discretion. I
+have determined, therefore, to call upon you and to consult you
+in reference to the very painful event which has occurred in
+connection with my wedding. Mr. Lestrade, of Scotland Yard, is
+acting already in the matter, but he assures me that he sees no
+objection to your co-operation, and that he even thinks that
+it might be of some assistance. I will call at four o'clock in
+the afternoon, and, should you have any other engagement at that
+time, I hope that you will postpone it, as this matter is of
+paramount importance. Yours faithfully, ST. SIMON.'
+
+"It is dated from Grosvenor Mansions, written with a quill pen,
+and the noble lord has had the misfortune to get a smear of ink
+upon the outer side of his right little finger," remarked Holmes
+as he folded up the epistle.
+
+"He says four o'clock. It is three now. He will be here in an
+hour."
+
+"Then I have just time, with your assistance, to get clear upon
+the subject. Turn over those papers and arrange the extracts in
+their order of time, while I take a glance as to who our client
+is." He picked a red-covered volume from a line of books of
+reference beside the mantelpiece. "Here he is," said he, sitting
+down and flattening it out upon his knee. "'Lord Robert Walsingham
+de Vere St. Simon, second son of the Duke of Balmoral.' Hum! 'Arms:
+Azure, three caltrops in chief over a fess sable. Born in 1846.'
+He's forty-one years of age, which is mature for marriage. Was
+Under-Secretary for the colonies in a late administration. The
+Duke, his father, was at one time Secretary for Foreign Affairs.
+They inherit Plantagenet blood by direct descent, and Tudor on
+the distaff side. Ha! Well, there is nothing very instructive in
+all this. I think that I must turn to you Watson, for something
+more solid."
+
+"I have very little difficulty in finding what I want," said I,
+"for the facts are quite recent, and the matter struck me as
+remarkable. I feared to refer them to you, however, as I knew
+that you had an inquiry on hand and that you disliked the
+intrusion of other matters."
+
+"Oh, you mean the little problem of the Grosvenor Square
+furniture van. That is quite cleared up now--though, indeed, it
+was obvious from the first. Pray give me the results of your
+newspaper selections."
+
+"Here is the first notice which I can find. It is in the personal
+column of the Morning Post, and dates, as you see, some weeks
+back: 'A marriage has been arranged,' it says, 'and will, if
+rumour is correct, very shortly take place, between Lord Robert
+St. Simon, second son of the Duke of Balmoral, and Miss Hatty
+Doran, the only daughter of Aloysius Doran. Esq., of San
+Francisco, Cal., U.S.A.' That is all."
+
+"Terse and to the point," remarked Holmes, stretching his long,
+thin legs towards the fire.
+
+"There was a paragraph amplifying this in one of the society
+papers of the same week. Ah, here it is: 'There will soon be a
+call for protection in the marriage market, for the present
+free-trade principle appears to tell heavily against our home
+product. One by one the management of the noble houses of Great
+Britain is passing into the hands of our fair cousins from across
+the Atlantic. An important addition has been made during the last
+week to the list of the prizes which have been borne away by
+these charming invaders. Lord St. Simon, who has shown himself
+for over twenty years proof against the little god's arrows, has
+now definitely announced his approaching marriage with Miss Hatty
+Doran, the fascinating daughter of a California millionaire. Miss
+Doran, whose graceful figure and striking face attracted much
+attention at the Westbury House festivities, is an only child,
+and it is currently reported that her dowry will run to
+considerably over the six figures, with expectancies for the
+future. As it is an open secret that the Duke of Balmoral has
+been compelled to sell his pictures within the last few years,
+and as Lord St. Simon has no property of his own save the small
+estate of Birchmoor, it is obvious that the Californian heiress
+is not the only gainer by an alliance which will enable her to
+make the easy and common transition from a Republican lady to a
+British peeress.'"
+
+"Anything else?" asked Holmes, yawning.
+
+"Oh, yes; plenty. Then there is another note in the Morning Post
+to say that the marriage would be an absolutely quiet one, that it
+would be at St. George's, Hanover Square, that only half a dozen
+intimate friends would be invited, and that the party would
+return to the furnished house at Lancaster Gate which has been
+taken by Mr. Aloysius Doran. Two days later--that is, on
+Wednesday last--there is a curt announcement that the wedding had
+taken place, and that the honeymoon would be passed at Lord
+Backwater's place, near Petersfield. Those are all the notices
+which appeared before the disappearance of the bride."
+
+"Before the what?" asked Holmes with a start.
+
+"The vanishing of the lady."
+
+"When did she vanish, then?"
+
+"At the wedding breakfast."
+
+"Indeed. This is more interesting than it promised to be; quite
+dramatic, in fact."
+
+"Yes; it struck me as being a little out of the common."
+
+"They often vanish before the ceremony, and occasionally during
+the honeymoon; but I cannot call to mind anything quite so prompt
+as this. Pray let me have the details."
+
+"I warn you that they are very incomplete."
+
+"Perhaps we may make them less so."
+
+"Such as they are, they are set forth in a single article of a
+morning paper of yesterday, which I will read to you. It is
+headed, 'Singular Occurrence at a Fashionable Wedding':
+
+"'The family of Lord Robert St. Simon has been thrown into the
+greatest consternation by the strange and painful episodes which
+have taken place in connection with his wedding. The ceremony, as
+shortly announced in the papers of yesterday, occurred on the
+previous morning; but it is only now that it has been possible to
+confirm the strange rumours which have been so persistently
+floating about. In spite of the attempts of the friends to hush
+the matter up, so much public attention has now been drawn to it
+that no good purpose can be served by affecting to disregard what
+is a common subject for conversation.
+
+"'The ceremony, which was performed at St. George's, Hanover
+Square, was a very quiet one, no one being present save the
+father of the bride, Mr. Aloysius Doran, the Duchess of Balmoral,
+Lord Backwater, Lord Eustace and Lady Clara St. Simon (the
+younger brother and sister of the bridegroom), and Lady Alicia
+Whittington. The whole party proceeded afterwards to the house of
+Mr. Aloysius Doran, at Lancaster Gate, where breakfast had been
+prepared. It appears that some little trouble was caused by a
+woman, whose name has not been ascertained, who endeavoured to
+force her way into the house after the bridal party, alleging
+that she had some claim upon Lord St. Simon. It was only after a
+painful and prolonged scene that she was ejected by the butler
+and the footman. The bride, who had fortunately entered the house
+before this unpleasant interruption, had sat down to breakfast
+with the rest, when she complained of a sudden indisposition and
+retired to her room. Her prolonged absence having caused some
+comment, her father followed her, but learned from her maid that
+she had only come up to her chamber for an instant, caught up an
+ulster and bonnet, and hurried down to the passage. One of the
+footmen declared that he had seen a lady leave the house thus
+apparelled, but had refused to credit that it was his mistress,
+believing her to be with the company. On ascertaining that his
+daughter had disappeared, Mr. Aloysius Doran, in conjunction with
+the bridegroom, instantly put themselves in communication with
+the police, and very energetic inquiries are being made, which
+will probably result in a speedy clearing up of this very
+singular business. Up to a late hour last night, however, nothing
+had transpired as to the whereabouts of the missing lady. There
+are rumours of foul play in the matter, and it is said that the
+police have caused the arrest of the woman who had caused the
+original disturbance, in the belief that, from jealousy or some
+other motive, she may have been concerned in the strange
+disappearance of the bride.'"
+
+"And is that all?"
+
+"Only one little item in another of the morning papers, but it is
+a suggestive one."
+
+"And it is--"
+
+"That Miss Flora Millar, the lady who had caused the disturbance,
+has actually been arrested. It appears that she was formerly a
+danseuse at the Allegro, and that she has known the bridegroom
+for some years. There are no further particulars, and the whole
+case is in your hands now--so far as it has been set forth in the
+public press."
+
+"And an exceedingly interesting case it appears to be. I would
+not have missed it for worlds. But there is a ring at the bell,
+Watson, and as the clock makes it a few minutes after four, I
+have no doubt that this will prove to be our noble client. Do not
+dream of going, Watson, for I very much prefer having a witness,
+if only as a check to my own memory."
+
+"Lord Robert St. Simon," announced our page-boy, throwing open
+the door. A gentleman entered, with a pleasant, cultured face,
+high-nosed and pale, with something perhaps of petulance about
+the mouth, and with the steady, well-opened eye of a man whose
+pleasant lot it had ever been to command and to be obeyed. His
+manner was brisk, and yet his general appearance gave an undue
+impression of age, for he had a slight forward stoop and a little
+bend of the knees as he walked. His hair, too, as he swept off
+his very curly-brimmed hat, was grizzled round the edges and thin
+upon the top. As to his dress, it was careful to the verge of
+foppishness, with high collar, black frock-coat, white waistcoat,
+yellow gloves, patent-leather shoes, and light-coloured gaiters.
+He advanced slowly into the room, turning his head from left to
+right, and swinging in his right hand the cord which held his
+golden eyeglasses.
+
+"Good-day, Lord St. Simon," said Holmes, rising and bowing. "Pray
+take the basket-chair. This is my friend and colleague, Dr.
+Watson. Draw up a little to the fire, and we will talk this
+matter over."
+
+"A most painful matter to me, as you can most readily imagine,
+Mr. Holmes. I have been cut to the quick. I understand that you
+have already managed several delicate cases of this sort, sir,
+though I presume that they were hardly from the same class of
+society."
+
+"No, I am descending."
+
+"I beg pardon."
+
+"My last client of the sort was a king."
+
+"Oh, really! I had no idea. And which king?"
+
+"The King of Scandinavia."
+
+"What! Had he lost his wife?"
+
+"You can understand," said Holmes suavely, "that I extend to the
+affairs of my other clients the same secrecy which I promise to
+you in yours."
+
+"Of course! Very right! very right! I'm sure I beg pardon. As to
+my own case, I am ready to give you any information which may
+assist you in forming an opinion."
+
+"Thank you. I have already learned all that is in the public
+prints, nothing more. I presume that I may take it as correct--this
+article, for example, as to the disappearance of the bride."
+
+Lord St. Simon glanced over it. "Yes, it is correct, as far as it
+goes."
+
+"But it needs a great deal of supplementing before anyone could
+offer an opinion. I think that I may arrive at my facts most
+directly by questioning you."
+
+"Pray do so."
+
+"When did you first meet Miss Hatty Doran?"
+
+"In San Francisco, a year ago."
+
+"You were travelling in the States?"
+
+"Yes."
+
+"Did you become engaged then?"
+
+"No."
+
+"But you were on a friendly footing?"
+
+"I was amused by her society, and she could see that I was
+amused."
+
+"Her father is very rich?"
+
+"He is said to be the richest man on the Pacific slope."
+
+"And how did he make his money?"
+
+"In mining. He had nothing a few years ago. Then he struck gold,
+invested it, and came up by leaps and bounds."
+
+"Now, what is your own impression as to the young lady's--your
+wife's character?"
+
+The nobleman swung his glasses a little faster and stared down
+into the fire. "You see, Mr. Holmes," said he, "my wife was
+twenty before her father became a rich man. During that time she
+ran free in a mining camp and wandered through woods or
+mountains, so that her education has come from Nature rather than
+from the schoolmaster. She is what we call in England a tomboy,
+with a strong nature, wild and free, unfettered by any sort of
+traditions. She is impetuous--volcanic, I was about to say. She
+is swift in making up her mind and fearless in carrying out her
+resolutions. On the other hand, I would not have given her the
+name which I have the honour to bear"--he gave a little stately
+cough--"had not I thought her to be at bottom a noble woman. I
+believe that she is capable of heroic self-sacrifice and that
+anything dishonourable would be repugnant to her."
+
+"Have you her photograph?"
+
+"I brought this with me." He opened a locket and showed us the
+full face of a very lovely woman. It was not a photograph but an
+ivory miniature, and the artist had brought out the full effect
+of the lustrous black hair, the large dark eyes, and the
+exquisite mouth. Holmes gazed long and earnestly at it. Then he
+closed the locket and handed it back to Lord St. Simon.
+
+"The young lady came to London, then, and you renewed your
+acquaintance?"
+
+"Yes, her father brought her over for this last London season. I
+met her several times, became engaged to her, and have now
+married her."
+
+"She brought, I understand, a considerable dowry?"
+
+"A fair dowry. Not more than is usual in my family."
+
+"And this, of course, remains to you, since the marriage is a
+fait accompli?"
+
+"I really have made no inquiries on the subject."
+
+"Very naturally not. Did you see Miss Doran on the day before the
+wedding?"
+
+"Yes."
+
+"Was she in good spirits?"
+
+"Never better. She kept talking of what we should do in our
+future lives."
+
+"Indeed! That is very interesting. And on the morning of the
+wedding?"
+
+"She was as bright as possible--at least until after the
+ceremony."
+
+"And did you observe any change in her then?"
+
+"Well, to tell the truth, I saw then the first signs that I had
+ever seen that her temper was just a little sharp. The incident
+however, was too trivial to relate and can have no possible
+bearing upon the case."
+
+"Pray let us have it, for all that."
+
+"Oh, it is childish. She dropped her bouquet as we went towards
+the vestry. She was passing the front pew at the time, and it
+fell over into the pew. There was a moment's delay, but the
+gentleman in the pew handed it up to her again, and it did not
+appear to be the worse for the fall. Yet when I spoke to her of
+the matter, she answered me abruptly; and in the carriage, on our
+way home, she seemed absurdly agitated over this trifling cause."
+
+"Indeed! You say that there was a gentleman in the pew. Some of
+the general public were present, then?"
+
+"Oh, yes. It is impossible to exclude them when the church is
+open."
+
+"This gentleman was not one of your wife's friends?"
+
+"No, no; I call him a gentleman by courtesy, but he was quite a
+common-looking person. I hardly noticed his appearance. But
+really I think that we are wandering rather far from the point."
+
+"Lady St. Simon, then, returned from the wedding in a less
+cheerful frame of mind than she had gone to it. What did she do
+on re-entering her father's house?"
+
+"I saw her in conversation with her maid."
+
+"And who is her maid?"
+
+"Alice is her name. She is an American and came from California
+with her."
+
+"A confidential servant?"
+
+"A little too much so. It seemed to me that her mistress allowed
+her to take great liberties. Still, of course, in America they
+look upon these things in a different way."
+
+"How long did she speak to this Alice?"
+
+"Oh, a few minutes. I had something else to think of."
+
+"You did not overhear what they said?"
+
+"Lady St. Simon said something about 'jumping a claim.' She was
+accustomed to use slang of the kind. I have no idea what she
+meant."
+
+"American slang is very expressive sometimes. And what did your
+wife do when she finished speaking to her maid?"
+
+"She walked into the breakfast-room."
+
+"On your arm?"
+
+"No, alone. She was very independent in little matters like that.
+Then, after we had sat down for ten minutes or so, she rose
+hurriedly, muttered some words of apology, and left the room. She
+never came back."
+
+"But this maid, Alice, as I understand, deposes that she went to
+her room, covered her bride's dress with a long ulster, put on a
+bonnet, and went out."
+
+"Quite so. And she was afterwards seen walking into Hyde Park in
+company with Flora Millar, a woman who is now in custody, and who
+had already made a disturbance at Mr. Doran's house that
+morning."
+
+"Ah, yes. I should like a few particulars as to this young lady,
+and your relations to her."
+
+Lord St. Simon shrugged his shoulders and raised his eyebrows.
+"We have been on a friendly footing for some years--I may say on
+a very friendly footing. She used to be at the Allegro. I have
+not treated her ungenerously, and she had no just cause of
+complaint against me, but you know what women are, Mr. Holmes.
+Flora was a dear little thing, but exceedingly hot-headed and
+devotedly attached to me. She wrote me dreadful letters when she
+heard that I was about to be married, and, to tell the truth, the
+reason why I had the marriage celebrated so quietly was that I
+feared lest there might be a scandal in the church. She came to
+Mr. Doran's door just after we returned, and she endeavoured to
+push her way in, uttering very abusive expressions towards my
+wife, and even threatening her, but I had foreseen the
+possibility of something of the sort, and I had two police
+fellows there in private clothes, who soon pushed her out again.
+She was quiet when she saw that there was no good in making a
+row."
+
+"Did your wife hear all this?"
+
+"No, thank goodness, she did not."
+
+"And she was seen walking with this very woman afterwards?"
+
+"Yes. That is what Mr. Lestrade, of Scotland Yard, looks upon as
+so serious. It is thought that Flora decoyed my wife out and laid
+some terrible trap for her."
+
+"Well, it is a possible supposition."
+
+"You think so, too?"
+
+"I did not say a probable one. But you do not yourself look upon
+this as likely?"
+
+"I do not think Flora would hurt a fly."
+
+"Still, jealousy is a strange transformer of characters. Pray
+what is your own theory as to what took place?"
+
+"Well, really, I came to seek a theory, not to propound one. I
+have given you all the facts. Since you ask me, however, I may
+say that it has occurred to me as possible that the excitement of
+this affair, the consciousness that she had made so immense a
+social stride, had the effect of causing some little nervous
+disturbance in my wife."
+
+"In short, that she had become suddenly deranged?"
+
+"Well, really, when I consider that she has turned her back--I
+will not say upon me, but upon so much that many have aspired to
+without success--I can hardly explain it in any other fashion."
+
+"Well, certainly that is also a conceivable hypothesis," said
+Holmes, smiling. "And now, Lord St. Simon, I think that I have
+nearly all my data. May I ask whether you were seated at the
+breakfast-table so that you could see out of the window?"
+
+"We could see the other side of the road and the Park."
+
+"Quite so. Then I do not think that I need to detain you longer.
+I shall communicate with you."
+
+"Should you be fortunate enough to solve this problem," said our
+client, rising.
+
+"I have solved it."
+
+"Eh? What was that?"
+
+"I say that I have solved it."
+
+"Where, then, is my wife?"
+
+"That is a detail which I shall speedily supply."
+
+Lord St. Simon shook his head. "I am afraid that it will take
+wiser heads than yours or mine," he remarked, and bowing in a
+stately, old-fashioned manner he departed.
+
+"It is very good of Lord St. Simon to honour my head by putting
+it on a level with his own," said Sherlock Holmes, laughing. "I
+think that I shall have a whisky and soda and a cigar after all
+this cross-questioning. I had formed my conclusions as to the
+case before our client came into the room."
+
+"My dear Holmes!"
+
+"I have notes of several similar cases, though none, as I
+remarked before, which were quite as prompt. My whole examination
+served to turn my conjecture into a certainty. Circumstantial
+evidence is occasionally very convincing, as when you find a
+trout in the milk, to quote Thoreau's example."
+
+"But I have heard all that you have heard."
+
+"Without, however, the knowledge of pre-existing cases which
+serves me so well. There was a parallel instance in Aberdeen some
+years back, and something on very much the same lines at Munich
+the year after the Franco-Prussian War. It is one of these
+cases--but, hullo, here is Lestrade! Good-afternoon, Lestrade!
+You will find an extra tumbler upon the sideboard, and there are
+cigars in the box."
+
+The official detective was attired in a pea-jacket and cravat,
+which gave him a decidedly nautical appearance, and he carried a
+black canvas bag in his hand. With a short greeting he seated
+himself and lit the cigar which had been offered to him.
+
+"What's up, then?" asked Holmes with a twinkle in his eye. "You
+look dissatisfied."
+
+"And I feel dissatisfied. It is this infernal St. Simon marriage
+case. I can make neither head nor tail of the business."
+
+"Really! You surprise me."
+
+"Who ever heard of such a mixed affair? Every clue seems to slip
+through my fingers. I have been at work upon it all day."
+
+"And very wet it seems to have made you," said Holmes laying his
+hand upon the arm of the pea-jacket.
+
+"Yes, I have been dragging the Serpentine."
+
+"In heaven's name, what for?"
+
+"In search of the body of Lady St. Simon."
+
+Sherlock Holmes leaned back in his chair and laughed heartily.
+
+"Have you dragged the basin of Trafalgar Square fountain?" he
+asked.
+
+"Why? What do you mean?"
+
+"Because you have just as good a chance of finding this lady in
+the one as in the other."
+
+Lestrade shot an angry glance at my companion. "I suppose you
+know all about it," he snarled.
+
+"Well, I have only just heard the facts, but my mind is made up."
+
+"Oh, indeed! Then you think that the Serpentine plays no part in
+the matter?"
+
+"I think it very unlikely."
+
+"Then perhaps you will kindly explain how it is that we found
+this in it?" He opened his bag as he spoke, and tumbled onto the
+floor a wedding-dress of watered silk, a pair of white satin
+shoes and a bride's wreath and veil, all discoloured and soaked
+in water. "There," said he, putting a new wedding-ring upon the
+top of the pile. "There is a little nut for you to crack, Master
+Holmes."
+
+"Oh, indeed!" said my friend, blowing blue rings into the air.
+"You dragged them from the Serpentine?"
+
+"No. They were found floating near the margin by a park-keeper.
+They have been identified as her clothes, and it seemed to me
+that if the clothes were there the body would not be far off."
+
+"By the same brilliant reasoning, every man's body is to be found
+in the neighbourhood of his wardrobe. And pray what did you hope
+to arrive at through this?"
+
+"At some evidence implicating Flora Millar in the disappearance."
+
+"I am afraid that you will find it difficult."
+
+"Are you, indeed, now?" cried Lestrade with some bitterness. "I
+am afraid, Holmes, that you are not very practical with your
+deductions and your inferences. You have made two blunders in as
+many minutes. This dress does implicate Miss Flora Millar."
+
+"And how?"
+
+"In the dress is a pocket. In the pocket is a card-case. In the
+card-case is a note. And here is the very note." He slapped it
+down upon the table in front of him. "Listen to this: 'You will
+see me when all is ready. Come at once. F.H.M.' Now my theory all
+along has been that Lady St. Simon was decoyed away by Flora
+Millar, and that she, with confederates, no doubt, was
+responsible for her disappearance. Here, signed with her
+initials, is the very note which was no doubt quietly slipped
+into her hand at the door and which lured her within their
+reach."
+
+"Very good, Lestrade," said Holmes, laughing. "You really are
+very fine indeed. Let me see it." He took up the paper in a
+listless way, but his attention instantly became riveted, and he
+gave a little cry of satisfaction. "This is indeed important,"
+said he.
+
+"Ha! you find it so?"
+
+"Extremely so. I congratulate you warmly."
+
+Lestrade rose in his triumph and bent his head to look. "Why," he
+shrieked, "you're looking at the wrong side!"
+
+"On the contrary, this is the right side."
+
+"The right side? You're mad! Here is the note written in pencil
+over here."
+
+"And over here is what appears to be the fragment of a hotel
+bill, which interests me deeply."
+
+"There's nothing in it. I looked at it before," said Lestrade.
+"'Oct. 4th, rooms 8s., breakfast 2s. 6d., cocktail 1s., lunch 2s.
+6d., glass sherry, 8d.' I see nothing in that."
+
+"Very likely not. It is most important, all the same. As to the
+note, it is important also, or at least the initials are, so I
+congratulate you again."
+
+"I've wasted time enough," said Lestrade, rising. "I believe in
+hard work and not in sitting by the fire spinning fine theories.
+Good-day, Mr. Holmes, and we shall see which gets to the bottom
+of the matter first." He gathered up the garments, thrust them
+into the bag, and made for the door.
+
+"Just one hint to you, Lestrade," drawled Holmes before his rival
+vanished; "I will tell you the true solution of the matter. Lady
+St. Simon is a myth. There is not, and there never has been, any
+such person."
+
+Lestrade looked sadly at my companion. Then he turned to me,
+tapped his forehead three times, shook his head solemnly, and
+hurried away.
+
+He had hardly shut the door behind him when Holmes rose to put on
+his overcoat. "There is something in what the fellow says about
+outdoor work," he remarked, "so I think, Watson, that I must
+leave you to your papers for a little."
+
+It was after five o'clock when Sherlock Holmes left me, but I had
+no time to be lonely, for within an hour there arrived a
+confectioner's man with a very large flat box. This he unpacked
+with the help of a youth whom he had brought with him, and
+presently, to my very great astonishment, a quite epicurean
+little cold supper began to be laid out upon our humble
+lodging-house mahogany. There were a couple of brace of cold
+woodcock, a pheasant, a pâté de foie gras pie with a group of
+ancient and cobwebby bottles. Having laid out all these luxuries,
+my two visitors vanished away, like the genii of the Arabian
+Nights, with no explanation save that the things had been paid
+for and were ordered to this address.
+
+Just before nine o'clock Sherlock Holmes stepped briskly into the
+room. His features were gravely set, but there was a light in his
+eye which made me think that he had not been disappointed in his
+conclusions.
+
+"They have laid the supper, then," he said, rubbing his hands.
+
+"You seem to expect company. They have laid for five."
+
+"Yes, I fancy we may have some company dropping in," said he. "I
+am surprised that Lord St. Simon has not already arrived. Ha! I
+fancy that I hear his step now upon the stairs."
+
+It was indeed our visitor of the afternoon who came bustling in,
+dangling his glasses more vigorously than ever, and with a very
+perturbed expression upon his aristocratic features.
+
+"My messenger reached you, then?" asked Holmes.
+
+"Yes, and I confess that the contents startled me beyond measure.
+Have you good authority for what you say?"
+
+"The best possible."
+
+Lord St. Simon sank into a chair and passed his hand over his
+forehead.
+
+"What will the Duke say," he murmured, "when he hears that one of
+the family has been subjected to such humiliation?"
+
+"It is the purest accident. I cannot allow that there is any
+humiliation."
+
+"Ah, you look on these things from another standpoint."
+
+"I fail to see that anyone is to blame. I can hardly see how the
+lady could have acted otherwise, though her abrupt method of
+doing it was undoubtedly to be regretted. Having no mother, she
+had no one to advise her at such a crisis."
+
+"It was a slight, sir, a public slight," said Lord St. Simon,
+tapping his fingers upon the table.
+
+"You must make allowance for this poor girl, placed in so
+unprecedented a position."
+
+"I will make no allowance. I am very angry indeed, and I have
+been shamefully used."
+
+"I think that I heard a ring," said Holmes. "Yes, there are steps
+on the landing. If I cannot persuade you to take a lenient view
+of the matter, Lord St. Simon, I have brought an advocate here
+who may be more successful." He opened the door and ushered in a
+lady and gentleman. "Lord St. Simon," said he "allow me to
+introduce you to Mr. and Mrs. Francis Hay Moulton. The lady, I
+think, you have already met."
+
+At the sight of these newcomers our client had sprung from his
+seat and stood very erect, with his eyes cast down and his hand
+thrust into the breast of his frock-coat, a picture of offended
+dignity. The lady had taken a quick step forward and had held out
+her hand to him, but he still refused to raise his eyes. It was
+as well for his resolution, perhaps, for her pleading face was
+one which it was hard to resist.
+
+"You're angry, Robert," said she. "Well, I guess you have every
+cause to be."
+
+"Pray make no apology to me," said Lord St. Simon bitterly.
+
+"Oh, yes, I know that I have treated you real bad and that I
+should have spoken to you before I went; but I was kind of
+rattled, and from the time when I saw Frank here again I just
+didn't know what I was doing or saying. I only wonder I didn't
+fall down and do a faint right there before the altar."
+
+"Perhaps, Mrs. Moulton, you would like my friend and me to leave
+the room while you explain this matter?"
+
+"If I may give an opinion," remarked the strange gentleman,
+"we've had just a little too much secrecy over this business
+already. For my part, I should like all Europe and America to
+hear the rights of it." He was a small, wiry, sunburnt man,
+clean-shaven, with a sharp face and alert manner.
+
+"Then I'll tell our story right away," said the lady. "Frank here
+and I met in '84, in McQuire's camp, near the Rockies, where pa
+was working a claim. We were engaged to each other, Frank and I;
+but then one day father struck a rich pocket and made a pile,
+while poor Frank here had a claim that petered out and came to
+nothing. The richer pa grew the poorer was Frank; so at last pa
+wouldn't hear of our engagement lasting any longer, and he took
+me away to 'Frisco. Frank wouldn't throw up his hand, though; so
+he followed me there, and he saw me without pa knowing anything
+about it. It would only have made him mad to know, so we just
+fixed it all up for ourselves. Frank said that he would go and
+make his pile, too, and never come back to claim me until he had
+as much as pa. So then I promised to wait for him to the end of
+time and pledged myself not to marry anyone else while he lived.
+'Why shouldn't we be married right away, then,' said he, 'and
+then I will feel sure of you; and I won't claim to be your
+husband until I come back?' Well, we talked it over, and he had
+fixed it all up so nicely, with a clergyman all ready in waiting,
+that we just did it right there; and then Frank went off to seek
+his fortune, and I went back to pa.
+
+"The next I heard of Frank was that he was in Montana, and then
+he went prospecting in Arizona, and then I heard of him from New
+Mexico. After that came a long newspaper story about how a
+miners' camp had been attacked by Apache Indians, and there was
+my Frank's name among the killed. I fainted dead away, and I was
+very sick for months after. Pa thought I had a decline and took
+me to half the doctors in 'Frisco. Not a word of news came for a
+year and more, so that I never doubted that Frank was really
+dead. Then Lord St. Simon came to 'Frisco, and we came to London,
+and a marriage was arranged, and pa was very pleased, but I felt
+all the time that no man on this earth would ever take the place
+in my heart that had been given to my poor Frank.
+
+"Still, if I had married Lord St. Simon, of course I'd have done
+my duty by him. We can't command our love, but we can our
+actions. I went to the altar with him with the intention to make
+him just as good a wife as it was in me to be. But you may
+imagine what I felt when, just as I came to the altar rails, I
+glanced back and saw Frank standing and looking at me out of the
+first pew. I thought it was his ghost at first; but when I looked
+again there he was still, with a kind of question in his eyes, as
+if to ask me whether I were glad or sorry to see him. I wonder I
+didn't drop. I know that everything was turning round, and the
+words of the clergyman were just like the buzz of a bee in my
+ear. I didn't know what to do. Should I stop the service and make
+a scene in the church? I glanced at him again, and he seemed to
+know what I was thinking, for he raised his finger to his lips to
+tell me to be still. Then I saw him scribble on a piece of paper,
+and I knew that he was writing me a note. As I passed his pew on
+the way out I dropped my bouquet over to him, and he slipped the
+note into my hand when he returned me the flowers. It was only a
+line asking me to join him when he made the sign to me to do so.
+Of course I never doubted for a moment that my first duty was now
+to him, and I determined to do just whatever he might direct.
+
+"When I got back I told my maid, who had known him in California,
+and had always been his friend. I ordered her to say nothing, but
+to get a few things packed and my ulster ready. I know I ought to
+have spoken to Lord St. Simon, but it was dreadful hard before
+his mother and all those great people. I just made up my mind to
+run away and explain afterwards. I hadn't been at the table ten
+minutes before I saw Frank out of the window at the other side of
+the road. He beckoned to me and then began walking into the Park.
+I slipped out, put on my things, and followed him. Some woman
+came talking something or other about Lord St. Simon to
+me--seemed to me from the little I heard as if he had a little
+secret of his own before marriage also--but I managed to get away
+from her and soon overtook Frank. We got into a cab together, and
+away we drove to some lodgings he had taken in Gordon Square, and
+that was my true wedding after all those years of waiting. Frank
+had been a prisoner among the Apaches, had escaped, came on to
+'Frisco, found that I had given him up for dead and had gone to
+England, followed me there, and had come upon me at last on the
+very morning of my second wedding."
+
+"I saw it in a paper," explained the American. "It gave the name
+and the church but not where the lady lived."
+
+"Then we had a talk as to what we should do, and Frank was all
+for openness, but I was so ashamed of it all that I felt as if I
+should like to vanish away and never see any of them again--just
+sending a line to pa, perhaps, to show him that I was alive. It
+was awful to me to think of all those lords and ladies sitting
+round that breakfast-table and waiting for me to come back. So
+Frank took my wedding-clothes and things and made a bundle of
+them, so that I should not be traced, and dropped them away
+somewhere where no one could find them. It is likely that we
+should have gone on to Paris to-morrow, only that this good
+gentleman, Mr. Holmes, came round to us this evening, though how
+he found us is more than I can think, and he showed us very
+clearly and kindly that I was wrong and that Frank was right, and
+that we should be putting ourselves in the wrong if we were so
+secret. Then he offered to give us a chance of talking to Lord
+St. Simon alone, and so we came right away round to his rooms at
+once. Now, Robert, you have heard it all, and I am very sorry if
+I have given you pain, and I hope that you do not think very
+meanly of me."
+
+Lord St. Simon had by no means relaxed his rigid attitude, but
+had listened with a frowning brow and a compressed lip to this
+long narrative.
+
+"Excuse me," he said, "but it is not my custom to discuss my most
+intimate personal affairs in this public manner."
+
+"Then you won't forgive me? You won't shake hands before I go?"
+
+"Oh, certainly, if it would give you any pleasure." He put out
+his hand and coldly grasped that which she extended to him.
+
+"I had hoped," suggested Holmes, "that you would have joined us
+in a friendly supper."
+
+"I think that there you ask a little too much," responded his
+Lordship. "I may be forced to acquiesce in these recent
+developments, but I can hardly be expected to make merry over
+them. I think that with your permission I will now wish you all a
+very good-night." He included us all in a sweeping bow and
+stalked out of the room.
+
+"Then I trust that you at least will honour me with your
+company," said Sherlock Holmes. "It is always a joy to meet an
+American, Mr. Moulton, for I am one of those who believe that the
+folly of a monarch and the blundering of a minister in far-gone
+years will not prevent our children from being some day citizens
+of the same world-wide country under a flag which shall be a
+quartering of the Union Jack with the Stars and Stripes."
+
+"The case has been an interesting one," remarked Holmes when our
+visitors had left us, "because it serves to show very clearly how
+simple the explanation may be of an affair which at first sight
+seems to be almost inexplicable. Nothing could be more natural
+than the sequence of events as narrated by this lady, and nothing
+stranger than the result when viewed, for instance, by Mr.
+Lestrade of Scotland Yard."
+
+"You were not yourself at fault at all, then?"
+
+"From the first, two facts were very obvious to me, the one that
+the lady had been quite willing to undergo the wedding ceremony,
+the other that she had repented of it within a few minutes of
+returning home. Obviously something had occurred during the
+morning, then, to cause her to change her mind. What could that
+something be? She could not have spoken to anyone when she was
+out, for she had been in the company of the bridegroom. Had she
+seen someone, then? If she had, it must be someone from America
+because she had spent so short a time in this country that she
+could hardly have allowed anyone to acquire so deep an influence
+over her that the mere sight of him would induce her to change
+her plans so completely. You see we have already arrived, by a
+process of exclusion, at the idea that she might have seen an
+American. Then who could this American be, and why should he
+possess so much influence over her? It might be a lover; it might
+be a husband. Her young womanhood had, I knew, been spent in
+rough scenes and under strange conditions. So far I had got
+before I ever heard Lord St. Simon's narrative. When he told us
+of a man in a pew, of the change in the bride's manner, of so
+transparent a device for obtaining a note as the dropping of a
+bouquet, of her resort to her confidential maid, and of her very
+significant allusion to claim-jumping--which in miners' parlance
+means taking possession of that which another person has a prior
+claim to--the whole situation became absolutely clear. She had
+gone off with a man, and the man was either a lover or was a
+previous husband--the chances being in favour of the latter."
+
+"And how in the world did you find them?"
+
+"It might have been difficult, but friend Lestrade held
+information in his hands the value of which he did not himself
+know. The initials were, of course, of the highest importance,
+but more valuable still was it to know that within a week he had
+settled his bill at one of the most select London hotels."
+
+"How did you deduce the select?"
+
+"By the select prices. Eight shillings for a bed and eightpence
+for a glass of sherry pointed to one of the most expensive
+hotels. There are not many in London which charge at that rate.
+In the second one which I visited in Northumberland Avenue, I
+learned by an inspection of the book that Francis H. Moulton, an
+American gentleman, had left only the day before, and on looking
+over the entries against him, I came upon the very items which I
+had seen in the duplicate bill. His letters were to be forwarded
+to 226 Gordon Square; so thither I travelled, and being fortunate
+enough to find the loving couple at home, I ventured to give them
+some paternal advice and to point out to them that it would be
+better in every way that they should make their position a little
+clearer both to the general public and to Lord St. Simon in
+particular. I invited them to meet him here, and, as you see, I
+made him keep the appointment."
+
+"But with no very good result," I remarked. "His conduct was
+certainly not very gracious."
+
+"Ah, Watson," said Holmes, smiling, "perhaps you would not be
+very gracious either, if, after all the trouble of wooing and
+wedding, you found yourself deprived in an instant of wife and of
+fortune. I think that we may judge Lord St. Simon very mercifully
+and thank our stars that we are never likely to find ourselves in
+the same position. Draw your chair up and hand me my violin, for
+the only problem we have still to solve is how to while away
+these bleak autumnal evenings."
+
+
+
+XI. THE ADVENTURE OF THE BERYL CORONET
+
+"Holmes," said I as I stood one morning in our bow-window looking
+down the street, "here is a madman coming along. It seems rather
+sad that his relatives should allow him to come out alone."
+
+My friend rose lazily from his armchair and stood with his hands
+in the pockets of his dressing-gown, looking over my shoulder. It
+was a bright, crisp February morning, and the snow of the day
+before still lay deep upon the ground, shimmering brightly in the
+wintry sun. Down the centre of Baker Street it had been ploughed
+into a brown crumbly band by the traffic, but at either side and
+on the heaped-up edges of the foot-paths it still lay as white as
+when it fell. The grey pavement had been cleaned and scraped, but
+was still dangerously slippery, so that there were fewer
+passengers than usual. Indeed, from the direction of the
+Metropolitan Station no one was coming save the single gentleman
+whose eccentric conduct had drawn my attention.
+
+He was a man of about fifty, tall, portly, and imposing, with a
+massive, strongly marked face and a commanding figure. He was
+dressed in a sombre yet rich style, in black frock-coat, shining
+hat, neat brown gaiters, and well-cut pearl-grey trousers. Yet
+his actions were in absurd contrast to the dignity of his dress
+and features, for he was running hard, with occasional little
+springs, such as a weary man gives who is little accustomed to
+set any tax upon his legs. As he ran he jerked his hands up and
+down, waggled his head, and writhed his face into the most
+extraordinary contortions.
+
+"What on earth can be the matter with him?" I asked. "He is
+looking up at the numbers of the houses."
+
+"I believe that he is coming here," said Holmes, rubbing his
+hands.
+
+"Here?"
+
+"Yes; I rather think he is coming to consult me professionally. I
+think that I recognise the symptoms. Ha! did I not tell you?" As
+he spoke, the man, puffing and blowing, rushed at our door and
+pulled at our bell until the whole house resounded with the
+clanging.
+
+A few moments later he was in our room, still puffing, still
+gesticulating, but with so fixed a look of grief and despair in
+his eyes that our smiles were turned in an instant to horror and
+pity. For a while he could not get his words out, but swayed his
+body and plucked at his hair like one who has been driven to the
+extreme limits of his reason. Then, suddenly springing to his
+feet, he beat his head against the wall with such force that we
+both rushed upon him and tore him away to the centre of the room.
+Sherlock Holmes pushed him down into the easy-chair and, sitting
+beside him, patted his hand and chatted with him in the easy,
+soothing tones which he knew so well how to employ.
+
+"You have come to me to tell your story, have you not?" said he.
+"You are fatigued with your haste. Pray wait until you have
+recovered yourself, and then I shall be most happy to look into
+any little problem which you may submit to me."
+
+The man sat for a minute or more with a heaving chest, fighting
+against his emotion. Then he passed his handkerchief over his
+brow, set his lips tight, and turned his face towards us.
+
+"No doubt you think me mad?" said he.
+
+"I see that you have had some great trouble," responded Holmes.
+
+"God knows I have!--a trouble which is enough to unseat my
+reason, so sudden and so terrible is it. Public disgrace I might
+have faced, although I am a man whose character has never yet
+borne a stain. Private affliction also is the lot of every man;
+but the two coming together, and in so frightful a form, have
+been enough to shake my very soul. Besides, it is not I alone.
+The very noblest in the land may suffer unless some way be found
+out of this horrible affair."
+
+"Pray compose yourself, sir," said Holmes, "and let me have a
+clear account of who you are and what it is that has befallen
+you."
+
+"My name," answered our visitor, "is probably familiar to your
+ears. I am Alexander Holder, of the banking firm of Holder &
+Stevenson, of Threadneedle Street."
+
+The name was indeed well known to us as belonging to the senior
+partner in the second largest private banking concern in the City
+of London. What could have happened, then, to bring one of the
+foremost citizens of London to this most pitiable pass? We
+waited, all curiosity, until with another effort he braced
+himself to tell his story.
+
+"I feel that time is of value," said he; "that is why I hastened
+here when the police inspector suggested that I should secure
+your co-operation. I came to Baker Street by the Underground and
+hurried from there on foot, for the cabs go slowly through this
+snow. That is why I was so out of breath, for I am a man who
+takes very little exercise. I feel better now, and I will put the
+facts before you as shortly and yet as clearly as I can.
+
+"It is, of course, well known to you that in a successful banking
+business as much depends upon our being able to find remunerative
+investments for our funds as upon our increasing our connection
+and the number of our depositors. One of our most lucrative means
+of laying out money is in the shape of loans, where the security
+is unimpeachable. We have done a good deal in this direction
+during the last few years, and there are many noble families to
+whom we have advanced large sums upon the security of their
+pictures, libraries, or plate.
+
+"Yesterday morning I was seated in my office at the bank when a
+card was brought in to me by one of the clerks. I started when I
+saw the name, for it was that of none other than--well, perhaps
+even to you I had better say no more than that it was a name
+which is a household word all over the earth--one of the highest,
+noblest, most exalted names in England. I was overwhelmed by the
+honour and attempted, when he entered, to say so, but he plunged
+at once into business with the air of a man who wishes to hurry
+quickly through a disagreeable task.
+
+"'Mr. Holder,' said he, 'I have been informed that you are in the
+habit of advancing money.'
+
+"'The firm does so when the security is good.' I answered.
+
+"'It is absolutely essential to me,' said he, 'that I should have
+50,000 pounds at once. I could, of course, borrow so trifling a
+sum ten times over from my friends, but I much prefer to make it
+a matter of business and to carry out that business myself. In my
+position you can readily understand that it is unwise to place
+one's self under obligations.'
+
+"'For how long, may I ask, do you want this sum?' I asked.
+
+"'Next Monday I have a large sum due to me, and I shall then most
+certainly repay what you advance, with whatever interest you
+think it right to charge. But it is very essential to me that the
+money should be paid at once.'
+
+"'I should be happy to advance it without further parley from my
+own private purse,' said I, 'were it not that the strain would be
+rather more than it could bear. If, on the other hand, I am to do
+it in the name of the firm, then in justice to my partner I must
+insist that, even in your case, every businesslike precaution
+should be taken.'
+
+"'I should much prefer to have it so,' said he, raising up a
+square, black morocco case which he had laid beside his chair.
+'You have doubtless heard of the Beryl Coronet?'
+
+"'One of the most precious public possessions of the empire,'
+said I.
+
+"'Precisely.' He opened the case, and there, imbedded in soft,
+flesh-coloured velvet, lay the magnificent piece of jewellery
+which he had named. 'There are thirty-nine enormous beryls,' said
+he, 'and the price of the gold chasing is incalculable. The
+lowest estimate would put the worth of the coronet at double the
+sum which I have asked. I am prepared to leave it with you as my
+security.'
+
+"I took the precious case into my hands and looked in some
+perplexity from it to my illustrious client.
+
+"'You doubt its value?' he asked.
+
+"'Not at all. I only doubt--'
+
+"'The propriety of my leaving it. You may set your mind at rest
+about that. I should not dream of doing so were it not absolutely
+certain that I should be able in four days to reclaim it. It is a
+pure matter of form. Is the security sufficient?'
+
+"'Ample.'
+
+"'You understand, Mr. Holder, that I am giving you a strong proof
+of the confidence which I have in you, founded upon all that I
+have heard of you. I rely upon you not only to be discreet and to
+refrain from all gossip upon the matter but, above all, to
+preserve this coronet with every possible precaution because I
+need not say that a great public scandal would be caused if any
+harm were to befall it. Any injury to it would be almost as
+serious as its complete loss, for there are no beryls in the
+world to match these, and it would be impossible to replace them.
+I leave it with you, however, with every confidence, and I shall
+call for it in person on Monday morning.'
+
+"Seeing that my client was anxious to leave, I said no more but,
+calling for my cashier, I ordered him to pay over fifty 1000
+pound notes. When I was alone once more, however, with the
+precious case lying upon the table in front of me, I could not
+but think with some misgivings of the immense responsibility
+which it entailed upon me. There could be no doubt that, as it
+was a national possession, a horrible scandal would ensue if any
+misfortune should occur to it. I already regretted having ever
+consented to take charge of it. However, it was too late to alter
+the matter now, so I locked it up in my private safe and turned
+once more to my work.
+
+"When evening came I felt that it would be an imprudence to leave
+so precious a thing in the office behind me. Bankers' safes had
+been forced before now, and why should not mine be? If so, how
+terrible would be the position in which I should find myself! I
+determined, therefore, that for the next few days I would always
+carry the case backward and forward with me, so that it might
+never be really out of my reach. With this intention, I called a
+cab and drove out to my house at Streatham, carrying the jewel
+with me. I did not breathe freely until I had taken it upstairs
+and locked it in the bureau of my dressing-room.
+
+"And now a word as to my household, Mr. Holmes, for I wish you to
+thoroughly understand the situation. My groom and my page sleep
+out of the house, and may be set aside altogether. I have three
+maid-servants who have been with me a number of years and whose
+absolute reliability is quite above suspicion. Another, Lucy
+Parr, the second waiting-maid, has only been in my service a few
+months. She came with an excellent character, however, and has
+always given me satisfaction. She is a very pretty girl and has
+attracted admirers who have occasionally hung about the place.
+That is the only drawback which we have found to her, but we
+believe her to be a thoroughly good girl in every way.
+
+"So much for the servants. My family itself is so small that it
+will not take me long to describe it. I am a widower and have an
+only son, Arthur. He has been a disappointment to me, Mr.
+Holmes--a grievous disappointment. I have no doubt that I am
+myself to blame. People tell me that I have spoiled him. Very
+likely I have. When my dear wife died I felt that he was all I
+had to love. I could not bear to see the smile fade even for a
+moment from his face. I have never denied him a wish. Perhaps it
+would have been better for both of us had I been sterner, but I
+meant it for the best.
+
+"It was naturally my intention that he should succeed me in my
+business, but he was not of a business turn. He was wild,
+wayward, and, to speak the truth, I could not trust him in the
+handling of large sums of money. When he was young he became a
+member of an aristocratic club, and there, having charming
+manners, he was soon the intimate of a number of men with long
+purses and expensive habits. He learned to play heavily at cards
+and to squander money on the turf, until he had again and again
+to come to me and implore me to give him an advance upon his
+allowance, that he might settle his debts of honour. He tried
+more than once to break away from the dangerous company which he
+was keeping, but each time the influence of his friend, Sir
+George Burnwell, was enough to draw him back again.
+
+"And, indeed, I could not wonder that such a man as Sir George
+Burnwell should gain an influence over him, for he has frequently
+brought him to my house, and I have found myself that I could
+hardly resist the fascination of his manner. He is older than
+Arthur, a man of the world to his finger-tips, one who had been
+everywhere, seen everything, a brilliant talker, and a man of
+great personal beauty. Yet when I think of him in cold blood, far
+away from the glamour of his presence, I am convinced from his
+cynical speech and the look which I have caught in his eyes that
+he is one who should be deeply distrusted. So I think, and so,
+too, thinks my little Mary, who has a woman's quick insight into
+character.
+
+"And now there is only she to be described. She is my niece; but
+when my brother died five years ago and left her alone in the
+world I adopted her, and have looked upon her ever since as my
+daughter. She is a sunbeam in my house--sweet, loving, beautiful,
+a wonderful manager and housekeeper, yet as tender and quiet and
+gentle as a woman could be. She is my right hand. I do not know
+what I could do without her. In only one matter has she ever gone
+against my wishes. Twice my boy has asked her to marry him, for
+he loves her devotedly, but each time she has refused him. I
+think that if anyone could have drawn him into the right path it
+would have been she, and that his marriage might have changed his
+whole life; but now, alas! it is too late--forever too late!
+
+"Now, Mr. Holmes, you know the people who live under my roof, and
+I shall continue with my miserable story.
+
+"When we were taking coffee in the drawing-room that night after
+dinner, I told Arthur and Mary my experience, and of the precious
+treasure which we had under our roof, suppressing only the name
+of my client. Lucy Parr, who had brought in the coffee, had, I am
+sure, left the room; but I cannot swear that the door was closed.
+Mary and Arthur were much interested and wished to see the famous
+coronet, but I thought it better not to disturb it.
+
+"'Where have you put it?' asked Arthur.
+
+"'In my own bureau.'
+
+"'Well, I hope to goodness the house won't be burgled during the
+night.' said he.
+
+"'It is locked up,' I answered.
+
+"'Oh, any old key will fit that bureau. When I was a youngster I
+have opened it myself with the key of the box-room cupboard.'
+
+"He often had a wild way of talking, so that I thought little of
+what he said. He followed me to my room, however, that night with
+a very grave face.
+
+"'Look here, dad,' said he with his eyes cast down, 'can you let
+me have 200 pounds?'
+
+"'No, I cannot!' I answered sharply. 'I have been far too
+generous with you in money matters.'
+
+"'You have been very kind,' said he, 'but I must have this money,
+or else I can never show my face inside the club again.'
+
+"'And a very good thing, too!' I cried.
+
+"'Yes, but you would not have me leave it a dishonoured man,'
+said he. 'I could not bear the disgrace. I must raise the money
+in some way, and if you will not let me have it, then I must try
+other means.'
+
+"I was very angry, for this was the third demand during the
+month. 'You shall not have a farthing from me,' I cried, on which
+he bowed and left the room without another word.
+
+"When he was gone I unlocked my bureau, made sure that my
+treasure was safe, and locked it again. Then I started to go
+round the house to see that all was secure--a duty which I
+usually leave to Mary but which I thought it well to perform
+myself that night. As I came down the stairs I saw Mary herself
+at the side window of the hall, which she closed and fastened as
+I approached.
+
+"'Tell me, dad,' said she, looking, I thought, a little
+disturbed, 'did you give Lucy, the maid, leave to go out
+to-night?'
+
+"'Certainly not.'
+
+"'She came in just now by the back door. I have no doubt that she
+has only been to the side gate to see someone, but I think that
+it is hardly safe and should be stopped.'
+
+"'You must speak to her in the morning, or I will if you prefer
+it. Are you sure that everything is fastened?'
+
+"'Quite sure, dad.'
+
+"'Then, good-night.' I kissed her and went up to my bedroom
+again, where I was soon asleep.
+
+"I am endeavouring to tell you everything, Mr. Holmes, which may
+have any bearing upon the case, but I beg that you will question
+me upon any point which I do not make clear."
+
+"On the contrary, your statement is singularly lucid."
+
+"I come to a part of my story now in which I should wish to be
+particularly so. I am not a very heavy sleeper, and the anxiety
+in my mind tended, no doubt, to make me even less so than usual.
+About two in the morning, then, I was awakened by some sound in
+the house. It had ceased ere I was wide awake, but it had left an
+impression behind it as though a window had gently closed
+somewhere. I lay listening with all my ears. Suddenly, to my
+horror, there was a distinct sound of footsteps moving softly in
+the next room. I slipped out of bed, all palpitating with fear,
+and peeped round the corner of my dressing-room door.
+
+"'Arthur!' I screamed, 'you villain! you thief! How dare you
+touch that coronet?'
+
+"The gas was half up, as I had left it, and my unhappy boy,
+dressed only in his shirt and trousers, was standing beside the
+light, holding the coronet in his hands. He appeared to be
+wrenching at it, or bending it with all his strength. At my cry
+he dropped it from his grasp and turned as pale as death. I
+snatched it up and examined it. One of the gold corners, with
+three of the beryls in it, was missing.
+
+"'You blackguard!' I shouted, beside myself with rage. 'You have
+destroyed it! You have dishonoured me forever! Where are the
+jewels which you have stolen?'
+
+"'Stolen!' he cried.
+
+"'Yes, thief!' I roared, shaking him by the shoulder.
+
+"'There are none missing. There cannot be any missing,' said he.
+
+"'There are three missing. And you know where they are. Must I
+call you a liar as well as a thief? Did I not see you trying to
+tear off another piece?'
+
+"'You have called me names enough,' said he, 'I will not stand it
+any longer. I shall not say another word about this business,
+since you have chosen to insult me. I will leave your house in
+the morning and make my own way in the world.'
+
+"'You shall leave it in the hands of the police!' I cried
+half-mad with grief and rage. 'I shall have this matter probed to
+the bottom.'
+
+"'You shall learn nothing from me,' said he with a passion such
+as I should not have thought was in his nature. 'If you choose to
+call the police, let the police find what they can.'
+
+"By this time the whole house was astir, for I had raised my
+voice in my anger. Mary was the first to rush into my room, and,
+at the sight of the coronet and of Arthur's face, she read the
+whole story and, with a scream, fell down senseless on the
+ground. I sent the house-maid for the police and put the
+investigation into their hands at once. When the inspector and a
+constable entered the house, Arthur, who had stood sullenly with
+his arms folded, asked me whether it was my intention to charge
+him with theft. I answered that it had ceased to be a private
+matter, but had become a public one, since the ruined coronet was
+national property. I was determined that the law should have its
+way in everything.
+
+"'At least,' said he, 'you will not have me arrested at once. It
+would be to your advantage as well as mine if I might leave the
+house for five minutes.'
+
+"'That you may get away, or perhaps that you may conceal what you
+have stolen,' said I. And then, realising the dreadful position
+in which I was placed, I implored him to remember that not only
+my honour but that of one who was far greater than I was at
+stake; and that he threatened to raise a scandal which would
+convulse the nation. He might avert it all if he would but tell
+me what he had done with the three missing stones.
+
+"'You may as well face the matter,' said I; 'you have been caught
+in the act, and no confession could make your guilt more heinous.
+If you but make such reparation as is in your power, by telling
+us where the beryls are, all shall be forgiven and forgotten.'
+
+"'Keep your forgiveness for those who ask for it,' he answered,
+turning away from me with a sneer. I saw that he was too hardened
+for any words of mine to influence him. There was but one way for
+it. I called in the inspector and gave him into custody. A search
+was made at once not only of his person but of his room and of
+every portion of the house where he could possibly have concealed
+the gems; but no trace of them could be found, nor would the
+wretched boy open his mouth for all our persuasions and our
+threats. This morning he was removed to a cell, and I, after
+going through all the police formalities, have hurried round to
+you to implore you to use your skill in unravelling the matter.
+The police have openly confessed that they can at present make
+nothing of it. You may go to any expense which you think
+necessary. I have already offered a reward of 1000 pounds. My
+God, what shall I do! I have lost my honour, my gems, and my son
+in one night. Oh, what shall I do!"
+
+He put a hand on either side of his head and rocked himself to
+and fro, droning to himself like a child whose grief has got
+beyond words.
+
+Sherlock Holmes sat silent for some few minutes, with his brows
+knitted and his eyes fixed upon the fire.
+
+"Do you receive much company?" he asked.
+
+"None save my partner with his family and an occasional friend of
+Arthur's. Sir George Burnwell has been several times lately. No
+one else, I think."
+
+"Do you go out much in society?"
+
+"Arthur does. Mary and I stay at home. We neither of us care for
+it."
+
+"That is unusual in a young girl."
+
+"She is of a quiet nature. Besides, she is not so very young. She
+is four-and-twenty."
+
+"This matter, from what you say, seems to have been a shock to
+her also."
+
+"Terrible! She is even more affected than I."
+
+"You have neither of you any doubt as to your son's guilt?"
+
+"How can we have when I saw him with my own eyes with the coronet
+in his hands."
+
+"I hardly consider that a conclusive proof. Was the remainder of
+the coronet at all injured?"
+
+"Yes, it was twisted."
+
+"Do you not think, then, that he might have been trying to
+straighten it?"
+
+"God bless you! You are doing what you can for him and for me.
+But it is too heavy a task. What was he doing there at all? If
+his purpose were innocent, why did he not say so?"
+
+"Precisely. And if it were guilty, why did he not invent a lie?
+His silence appears to me to cut both ways. There are several
+singular points about the case. What did the police think of the
+noise which awoke you from your sleep?"
+
+"They considered that it might be caused by Arthur's closing his
+bedroom door."
+
+"A likely story! As if a man bent on felony would slam his door
+so as to wake a household. What did they say, then, of the
+disappearance of these gems?"
+
+"They are still sounding the planking and probing the furniture
+in the hope of finding them."
+
+"Have they thought of looking outside the house?"
+
+"Yes, they have shown extraordinary energy. The whole garden has
+already been minutely examined."
+
+"Now, my dear sir," said Holmes, "is it not obvious to you now
+that this matter really strikes very much deeper than either you
+or the police were at first inclined to think? It appeared to you
+to be a simple case; to me it seems exceedingly complex. Consider
+what is involved by your theory. You suppose that your son came
+down from his bed, went, at great risk, to your dressing-room,
+opened your bureau, took out your coronet, broke off by main
+force a small portion of it, went off to some other place,
+concealed three gems out of the thirty-nine, with such skill that
+nobody can find them, and then returned with the other thirty-six
+into the room in which he exposed himself to the greatest danger
+of being discovered. I ask you now, is such a theory tenable?"
+
+"But what other is there?" cried the banker with a gesture of
+despair. "If his motives were innocent, why does he not explain
+them?"
+
+"It is our task to find that out," replied Holmes; "so now, if
+you please, Mr. Holder, we will set off for Streatham together,
+and devote an hour to glancing a little more closely into
+details."
+
+My friend insisted upon my accompanying them in their expedition,
+which I was eager enough to do, for my curiosity and sympathy
+were deeply stirred by the story to which we had listened. I
+confess that the guilt of the banker's son appeared to me to be
+as obvious as it did to his unhappy father, but still I had such
+faith in Holmes' judgment that I felt that there must be some
+grounds for hope as long as he was dissatisfied with the accepted
+explanation. He hardly spoke a word the whole way out to the
+southern suburb, but sat with his chin upon his breast and his
+hat drawn over his eyes, sunk in the deepest thought. Our client
+appeared to have taken fresh heart at the little glimpse of hope
+which had been presented to him, and he even broke into a
+desultory chat with me over his business affairs. A short railway
+journey and a shorter walk brought us to Fairbank, the modest
+residence of the great financier.
+
+Fairbank was a good-sized square house of white stone, standing
+back a little from the road. A double carriage-sweep, with a
+snow-clad lawn, stretched down in front to two large iron gates
+which closed the entrance. On the right side was a small wooden
+thicket, which led into a narrow path between two neat hedges
+stretching from the road to the kitchen door, and forming the
+tradesmen's entrance. On the left ran a lane which led to the
+stables, and was not itself within the grounds at all, being a
+public, though little used, thoroughfare. Holmes left us standing
+at the door and walked slowly all round the house, across the
+front, down the tradesmen's path, and so round by the garden
+behind into the stable lane. So long was he that Mr. Holder and I
+went into the dining-room and waited by the fire until he should
+return. We were sitting there in silence when the door opened and
+a young lady came in. She was rather above the middle height,
+slim, with dark hair and eyes, which seemed the darker against
+the absolute pallor of her skin. I do not think that I have ever
+seen such deadly paleness in a woman's face. Her lips, too, were
+bloodless, but her eyes were flushed with crying. As she swept
+silently into the room she impressed me with a greater sense of
+grief than the banker had done in the morning, and it was the
+more striking in her as she was evidently a woman of strong
+character, with immense capacity for self-restraint. Disregarding
+my presence, she went straight to her uncle and passed her hand
+over his head with a sweet womanly caress.
+
+"You have given orders that Arthur should be liberated, have you
+not, dad?" she asked.
+
+"No, no, my girl, the matter must be probed to the bottom."
+
+"But I am so sure that he is innocent. You know what woman's
+instincts are. I know that he has done no harm and that you will
+be sorry for having acted so harshly."
+
+"Why is he silent, then, if he is innocent?"
+
+"Who knows? Perhaps because he was so angry that you should
+suspect him."
+
+"How could I help suspecting him, when I actually saw him with
+the coronet in his hand?"
+
+"Oh, but he had only picked it up to look at it. Oh, do, do take
+my word for it that he is innocent. Let the matter drop and say
+no more. It is so dreadful to think of our dear Arthur in
+prison!"
+
+"I shall never let it drop until the gems are found--never, Mary!
+Your affection for Arthur blinds you as to the awful consequences
+to me. Far from hushing the thing up, I have brought a gentleman
+down from London to inquire more deeply into it."
+
+"This gentleman?" she asked, facing round to me.
+
+"No, his friend. He wished us to leave him alone. He is round in
+the stable lane now."
+
+"The stable lane?" She raised her dark eyebrows. "What can he
+hope to find there? Ah! this, I suppose, is he. I trust, sir,
+that you will succeed in proving, what I feel sure is the truth,
+that my cousin Arthur is innocent of this crime."
+
+"I fully share your opinion, and I trust, with you, that we may
+prove it," returned Holmes, going back to the mat to knock the
+snow from his shoes. "I believe I have the honour of addressing
+Miss Mary Holder. Might I ask you a question or two?"
+
+"Pray do, sir, if it may help to clear this horrible affair up."
+
+"You heard nothing yourself last night?"
+
+"Nothing, until my uncle here began to speak loudly. I heard
+that, and I came down."
+
+"You shut up the windows and doors the night before. Did you
+fasten all the windows?"
+
+"Yes."
+
+"Were they all fastened this morning?"
+
+"Yes."
+
+"You have a maid who has a sweetheart? I think that you remarked
+to your uncle last night that she had been out to see him?"
+
+"Yes, and she was the girl who waited in the drawing-room, and
+who may have heard uncle's remarks about the coronet."
+
+"I see. You infer that she may have gone out to tell her
+sweetheart, and that the two may have planned the robbery."
+
+"But what is the good of all these vague theories," cried the
+banker impatiently, "when I have told you that I saw Arthur with
+the coronet in his hands?"
+
+"Wait a little, Mr. Holder. We must come back to that. About this
+girl, Miss Holder. You saw her return by the kitchen door, I
+presume?"
+
+"Yes; when I went to see if the door was fastened for the night I
+met her slipping in. I saw the man, too, in the gloom."
+
+"Do you know him?"
+
+"Oh, yes! he is the green-grocer who brings our vegetables round.
+His name is Francis Prosper."
+
+"He stood," said Holmes, "to the left of the door--that is to
+say, farther up the path than is necessary to reach the door?"
+
+"Yes, he did."
+
+"And he is a man with a wooden leg?"
+
+Something like fear sprang up in the young lady's expressive
+black eyes. "Why, you are like a magician," said she. "How do you
+know that?" She smiled, but there was no answering smile in
+Holmes' thin, eager face.
+
+"I should be very glad now to go upstairs," said he. "I shall
+probably wish to go over the outside of the house again. Perhaps
+I had better take a look at the lower windows before I go up."
+
+He walked swiftly round from one to the other, pausing only at
+the large one which looked from the hall onto the stable lane.
+This he opened and made a very careful examination of the sill
+with his powerful magnifying lens. "Now we shall go upstairs,"
+said he at last.
+
+The banker's dressing-room was a plainly furnished little
+chamber, with a grey carpet, a large bureau, and a long mirror.
+Holmes went to the bureau first and looked hard at the lock.
+
+"Which key was used to open it?" he asked.
+
+"That which my son himself indicated--that of the cupboard of the
+lumber-room."
+
+"Have you it here?"
+
+"That is it on the dressing-table."
+
+Sherlock Holmes took it up and opened the bureau.
+
+"It is a noiseless lock," said he. "It is no wonder that it did
+not wake you. This case, I presume, contains the coronet. We must
+have a look at it." He opened the case, and taking out the diadem
+he laid it upon the table. It was a magnificent specimen of the
+jeweller's art, and the thirty-six stones were the finest that I
+have ever seen. At one side of the coronet was a cracked edge,
+where a corner holding three gems had been torn away.
+
+"Now, Mr. Holder," said Holmes, "here is the corner which
+corresponds to that which has been so unfortunately lost. Might I
+beg that you will break it off."
+
+The banker recoiled in horror. "I should not dream of trying,"
+said he.
+
+"Then I will." Holmes suddenly bent his strength upon it, but
+without result. "I feel it give a little," said he; "but, though
+I am exceptionally strong in the fingers, it would take me all my
+time to break it. An ordinary man could not do it. Now, what do
+you think would happen if I did break it, Mr. Holder? There would
+be a noise like a pistol shot. Do you tell me that all this
+happened within a few yards of your bed and that you heard
+nothing of it?"
+
+"I do not know what to think. It is all dark to me."
+
+"But perhaps it may grow lighter as we go. What do you think,
+Miss Holder?"
+
+"I confess that I still share my uncle's perplexity."
+
+"Your son had no shoes or slippers on when you saw him?"
+
+"He had nothing on save only his trousers and shirt."
+
+"Thank you. We have certainly been favoured with extraordinary
+luck during this inquiry, and it will be entirely our own fault
+if we do not succeed in clearing the matter up. With your
+permission, Mr. Holder, I shall now continue my investigations
+outside."
+
+He went alone, at his own request, for he explained that any
+unnecessary footmarks might make his task more difficult. For an
+hour or more he was at work, returning at last with his feet
+heavy with snow and his features as inscrutable as ever.
+
+"I think that I have seen now all that there is to see, Mr.
+Holder," said he; "I can serve you best by returning to my
+rooms."
+
+"But the gems, Mr. Holmes. Where are they?"
+
+"I cannot tell."
+
+The banker wrung his hands. "I shall never see them again!" he
+cried. "And my son? You give me hopes?"
+
+"My opinion is in no way altered."
+
+"Then, for God's sake, what was this dark business which was
+acted in my house last night?"
+
+"If you can call upon me at my Baker Street rooms to-morrow
+morning between nine and ten I shall be happy to do what I can to
+make it clearer. I understand that you give me carte blanche to
+act for you, provided only that I get back the gems, and that you
+place no limit on the sum I may draw."
+
+"I would give my fortune to have them back."
+
+"Very good. I shall look into the matter between this and then.
+Good-bye; it is just possible that I may have to come over here
+again before evening."
+
+It was obvious to me that my companion's mind was now made up
+about the case, although what his conclusions were was more than
+I could even dimly imagine. Several times during our homeward
+journey I endeavoured to sound him upon the point, but he always
+glided away to some other topic, until at last I gave it over in
+despair. It was not yet three when we found ourselves in our
+rooms once more. He hurried to his chamber and was down again in
+a few minutes dressed as a common loafer. With his collar turned
+up, his shiny, seedy coat, his red cravat, and his worn boots, he
+was a perfect sample of the class.
+
+"I think that this should do," said he, glancing into the glass
+above the fireplace. "I only wish that you could come with me,
+Watson, but I fear that it won't do. I may be on the trail in
+this matter, or I may be following a will-o'-the-wisp, but I
+shall soon know which it is. I hope that I may be back in a few
+hours." He cut a slice of beef from the joint upon the sideboard,
+sandwiched it between two rounds of bread, and thrusting this
+rude meal into his pocket he started off upon his expedition.
+
+I had just finished my tea when he returned, evidently in
+excellent spirits, swinging an old elastic-sided boot in his
+hand. He chucked it down into a corner and helped himself to a
+cup of tea.
+
+"I only looked in as I passed," said he. "I am going right on."
+
+"Where to?"
+
+"Oh, to the other side of the West End. It may be some time
+before I get back. Don't wait up for me in case I should be
+late."
+
+"How are you getting on?"
+
+"Oh, so so. Nothing to complain of. I have been out to Streatham
+since I saw you last, but I did not call at the house. It is a
+very sweet little problem, and I would not have missed it for a
+good deal. However, I must not sit gossiping here, but must get
+these disreputable clothes off and return to my highly
+respectable self."
+
+I could see by his manner that he had stronger reasons for
+satisfaction than his words alone would imply. His eyes twinkled,
+and there was even a touch of colour upon his sallow cheeks. He
+hastened upstairs, and a few minutes later I heard the slam of
+the hall door, which told me that he was off once more upon his
+congenial hunt.
+
+I waited until midnight, but there was no sign of his return, so
+I retired to my room. It was no uncommon thing for him to be away
+for days and nights on end when he was hot upon a scent, so that
+his lateness caused me no surprise. I do not know at what hour he
+came in, but when I came down to breakfast in the morning there
+he was with a cup of coffee in one hand and the paper in the
+other, as fresh and trim as possible.
+
+"You will excuse my beginning without you, Watson," said he, "but
+you remember that our client has rather an early appointment this
+morning."
+
+"Why, it is after nine now," I answered. "I should not be
+surprised if that were he. I thought I heard a ring."
+
+It was, indeed, our friend the financier. I was shocked by the
+change which had come over him, for his face which was naturally
+of a broad and massive mould, was now pinched and fallen in,
+while his hair seemed to me at least a shade whiter. He entered
+with a weariness and lethargy which was even more painful than
+his violence of the morning before, and he dropped heavily into
+the armchair which I pushed forward for him.
+
+"I do not know what I have done to be so severely tried," said
+he. "Only two days ago I was a happy and prosperous man, without
+a care in the world. Now I am left to a lonely and dishonoured
+age. One sorrow comes close upon the heels of another. My niece,
+Mary, has deserted me."
+
+"Deserted you?"
+
+"Yes. Her bed this morning had not been slept in, her room was
+empty, and a note for me lay upon the hall table. I had said to
+her last night, in sorrow and not in anger, that if she had
+married my boy all might have been well with him. Perhaps it was
+thoughtless of me to say so. It is to that remark that she refers
+in this note:
+
+"'MY DEAREST UNCLE:--I feel that I have brought trouble upon you,
+and that if I had acted differently this terrible misfortune
+might never have occurred. I cannot, with this thought in my
+mind, ever again be happy under your roof, and I feel that I must
+leave you forever. Do not worry about my future, for that is
+provided for; and, above all, do not search for me, for it will
+be fruitless labour and an ill-service to me. In life or in
+death, I am ever your loving,--MARY.'
+
+"What could she mean by that note, Mr. Holmes? Do you think it
+points to suicide?"
+
+"No, no, nothing of the kind. It is perhaps the best possible
+solution. I trust, Mr. Holder, that you are nearing the end of
+your troubles."
+
+"Ha! You say so! You have heard something, Mr. Holmes; you have
+learned something! Where are the gems?"
+
+"You would not think 1000 pounds apiece an excessive sum for
+them?"
+
+"I would pay ten."
+
+"That would be unnecessary. Three thousand will cover the matter.
+And there is a little reward, I fancy. Have you your check-book?
+Here is a pen. Better make it out for 4000 pounds."
+
+With a dazed face the banker made out the required check. Holmes
+walked over to his desk, took out a little triangular piece of
+gold with three gems in it, and threw it down upon the table.
+
+With a shriek of joy our client clutched it up.
+
+"You have it!" he gasped. "I am saved! I am saved!"
+
+The reaction of joy was as passionate as his grief had been, and
+he hugged his recovered gems to his bosom.
+
+"There is one other thing you owe, Mr. Holder," said Sherlock
+Holmes rather sternly.
+
+"Owe!" He caught up a pen. "Name the sum, and I will pay it."
+
+"No, the debt is not to me. You owe a very humble apology to that
+noble lad, your son, who has carried himself in this matter as I
+should be proud to see my own son do, should I ever chance to
+have one."
+
+"Then it was not Arthur who took them?"
+
+"I told you yesterday, and I repeat to-day, that it was not."
+
+"You are sure of it! Then let us hurry to him at once to let him
+know that the truth is known."
+
+"He knows it already. When I had cleared it all up I had an
+interview with him, and finding that he would not tell me the
+story, I told it to him, on which he had to confess that I was
+right and to add the very few details which were not yet quite
+clear to me. Your news of this morning, however, may open his
+lips."
+
+"For heaven's sake, tell me, then, what is this extraordinary
+mystery!"
+
+"I will do so, and I will show you the steps by which I reached
+it. And let me say to you, first, that which it is hardest for me
+to say and for you to hear: there has been an understanding
+between Sir George Burnwell and your niece Mary. They have now
+fled together."
+
+"My Mary? Impossible!"
+
+"It is unfortunately more than possible; it is certain. Neither
+you nor your son knew the true character of this man when you
+admitted him into your family circle. He is one of the most
+dangerous men in England--a ruined gambler, an absolutely
+desperate villain, a man without heart or conscience. Your niece
+knew nothing of such men. When he breathed his vows to her, as he
+had done to a hundred before her, she flattered herself that she
+alone had touched his heart. The devil knows best what he said,
+but at least she became his tool and was in the habit of seeing
+him nearly every evening."
+
+"I cannot, and I will not, believe it!" cried the banker with an
+ashen face.
+
+"I will tell you, then, what occurred in your house last night.
+Your niece, when you had, as she thought, gone to your room,
+slipped down and talked to her lover through the window which
+leads into the stable lane. His footmarks had pressed right
+through the snow, so long had he stood there. She told him of the
+coronet. His wicked lust for gold kindled at the news, and he
+bent her to his will. I have no doubt that she loved you, but
+there are women in whom the love of a lover extinguishes all
+other loves, and I think that she must have been one. She had
+hardly listened to his instructions when she saw you coming
+downstairs, on which she closed the window rapidly and told you
+about one of the servants' escapade with her wooden-legged lover,
+which was all perfectly true.
+
+"Your boy, Arthur, went to bed after his interview with you but
+he slept badly on account of his uneasiness about his club debts.
+In the middle of the night he heard a soft tread pass his door,
+so he rose and, looking out, was surprised to see his cousin
+walking very stealthily along the passage until she disappeared
+into your dressing-room. Petrified with astonishment, the lad
+slipped on some clothes and waited there in the dark to see what
+would come of this strange affair. Presently she emerged from the
+room again, and in the light of the passage-lamp your son saw
+that she carried the precious coronet in her hands. She passed
+down the stairs, and he, thrilling with horror, ran along and
+slipped behind the curtain near your door, whence he could see
+what passed in the hall beneath. He saw her stealthily open the
+window, hand out the coronet to someone in the gloom, and then
+closing it once more hurry back to her room, passing quite close
+to where he stood hid behind the curtain.
+
+"As long as she was on the scene he could not take any action
+without a horrible exposure of the woman whom he loved. But the
+instant that she was gone he realised how crushing a misfortune
+this would be for you, and how all-important it was to set it
+right. He rushed down, just as he was, in his bare feet, opened
+the window, sprang out into the snow, and ran down the lane,
+where he could see a dark figure in the moonlight. Sir George
+Burnwell tried to get away, but Arthur caught him, and there was
+a struggle between them, your lad tugging at one side of the
+coronet, and his opponent at the other. In the scuffle, your son
+struck Sir George and cut him over the eye. Then something
+suddenly snapped, and your son, finding that he had the coronet
+in his hands, rushed back, closed the window, ascended to your
+room, and had just observed that the coronet had been twisted in
+the struggle and was endeavouring to straighten it when you
+appeared upon the scene."
+
+"Is it possible?" gasped the banker.
+
+"You then roused his anger by calling him names at a moment when
+he felt that he had deserved your warmest thanks. He could not
+explain the true state of affairs without betraying one who
+certainly deserved little enough consideration at his hands. He
+took the more chivalrous view, however, and preserved her
+secret."
+
+"And that was why she shrieked and fainted when she saw the
+coronet," cried Mr. Holder. "Oh, my God! what a blind fool I have
+been! And his asking to be allowed to go out for five minutes!
+The dear fellow wanted to see if the missing piece were at the
+scene of the struggle. How cruelly I have misjudged him!"
+
+"When I arrived at the house," continued Holmes, "I at once went
+very carefully round it to observe if there were any traces in
+the snow which might help me. I knew that none had fallen since
+the evening before, and also that there had been a strong frost
+to preserve impressions. I passed along the tradesmen's path, but
+found it all trampled down and indistinguishable. Just beyond it,
+however, at the far side of the kitchen door, a woman had stood
+and talked with a man, whose round impressions on one side showed
+that he had a wooden leg. I could even tell that they had been
+disturbed, for the woman had run back swiftly to the door, as was
+shown by the deep toe and light heel marks, while Wooden-leg had
+waited a little, and then had gone away. I thought at the time
+that this might be the maid and her sweetheart, of whom you had
+already spoken to me, and inquiry showed it was so. I passed
+round the garden without seeing anything more than random tracks,
+which I took to be the police; but when I got into the stable
+lane a very long and complex story was written in the snow in
+front of me.
+
+"There was a double line of tracks of a booted man, and a second
+double line which I saw with delight belonged to a man with naked
+feet. I was at once convinced from what you had told me that the
+latter was your son. The first had walked both ways, but the
+other had run swiftly, and as his tread was marked in places over
+the depression of the boot, it was obvious that he had passed
+after the other. I followed them up and found they led to the
+hall window, where Boots had worn all the snow away while
+waiting. Then I walked to the other end, which was a hundred
+yards or more down the lane. I saw where Boots had faced round,
+where the snow was cut up as though there had been a struggle,
+and, finally, where a few drops of blood had fallen, to show me
+that I was not mistaken. Boots had then run down the lane, and
+another little smudge of blood showed that it was he who had been
+hurt. When he came to the highroad at the other end, I found that
+the pavement had been cleared, so there was an end to that clue.
+
+"On entering the house, however, I examined, as you remember, the
+sill and framework of the hall window with my lens, and I could
+at once see that someone had passed out. I could distinguish the
+outline of an instep where the wet foot had been placed in coming
+in. I was then beginning to be able to form an opinion as to what
+had occurred. A man had waited outside the window; someone had
+brought the gems; the deed had been overseen by your son; he had
+pursued the thief; had struggled with him; they had each tugged
+at the coronet, their united strength causing injuries which
+neither alone could have effected. He had returned with the
+prize, but had left a fragment in the grasp of his opponent. So
+far I was clear. The question now was, who was the man and who
+was it brought him the coronet?
+
+"It is an old maxim of mine that when you have excluded the
+impossible, whatever remains, however improbable, must be the
+truth. Now, I knew that it was not you who had brought it down,
+so there only remained your niece and the maids. But if it were
+the maids, why should your son allow himself to be accused in
+their place? There could be no possible reason. As he loved his
+cousin, however, there was an excellent explanation why he should
+retain her secret--the more so as the secret was a disgraceful
+one. When I remembered that you had seen her at that window, and
+how she had fainted on seeing the coronet again, my conjecture
+became a certainty.
+
+"And who could it be who was her confederate? A lover evidently,
+for who else could outweigh the love and gratitude which she must
+feel to you? I knew that you went out little, and that your
+circle of friends was a very limited one. But among them was Sir
+George Burnwell. I had heard of him before as being a man of evil
+reputation among women. It must have been he who wore those boots
+and retained the missing gems. Even though he knew that Arthur
+had discovered him, he might still flatter himself that he was
+safe, for the lad could not say a word without compromising his
+own family.
+
+"Well, your own good sense will suggest what measures I took
+next. I went in the shape of a loafer to Sir George's house,
+managed to pick up an acquaintance with his valet, learned that
+his master had cut his head the night before, and, finally, at
+the expense of six shillings, made all sure by buying a pair of
+his cast-off shoes. With these I journeyed down to Streatham and
+saw that they exactly fitted the tracks."
+
+"I saw an ill-dressed vagabond in the lane yesterday evening,"
+said Mr. Holder.
+
+"Precisely. It was I. I found that I had my man, so I came home
+and changed my clothes. It was a delicate part which I had to
+play then, for I saw that a prosecution must be avoided to avert
+scandal, and I knew that so astute a villain would see that our
+hands were tied in the matter. I went and saw him. At first, of
+course, he denied everything. But when I gave him every
+particular that had occurred, he tried to bluster and took down a
+life-preserver from the wall. I knew my man, however, and I
+clapped a pistol to his head before he could strike. Then he
+became a little more reasonable. I told him that we would give
+him a price for the stones he held--1000 pounds apiece. That
+brought out the first signs of grief that he had shown. 'Why,
+dash it all!' said he, 'I've let them go at six hundred for the
+three!' I soon managed to get the address of the receiver who had
+them, on promising him that there would be no prosecution. Off I
+set to him, and after much chaffering I got our stones at 1000
+pounds apiece. Then I looked in upon your son, told him that all
+was right, and eventually got to my bed about two o'clock, after
+what I may call a really hard day's work."
+
+"A day which has saved England from a great public scandal," said
+the banker, rising. "Sir, I cannot find words to thank you, but
+you shall not find me ungrateful for what you have done. Your
+skill has indeed exceeded all that I have heard of it. And now I
+must fly to my dear boy to apologise to him for the wrong which I
+have done him. As to what you tell me of poor Mary, it goes to my
+very heart. Not even your skill can inform me where she is now."
+
+"I think that we may safely say," returned Holmes, "that she is
+wherever Sir George Burnwell is. It is equally certain, too, that
+whatever her sins are, they will soon receive a more than
+sufficient punishment."
+
+
+
+XII. THE ADVENTURE OF THE COPPER BEECHES
+
+"To the man who loves art for its own sake," remarked Sherlock
+Holmes, tossing aside the advertisement sheet of the Daily
+Telegraph, "it is frequently in its least important and lowliest
+manifestations that the keenest pleasure is to be derived. It is
+pleasant to me to observe, Watson, that you have so far grasped
+this truth that in these little records of our cases which you
+have been good enough to draw up, and, I am bound to say,
+occasionally to embellish, you have given prominence not so much
+to the many causes célèbres and sensational trials in which I
+have figured but rather to those incidents which may have been
+trivial in themselves, but which have given room for those
+faculties of deduction and of logical synthesis which I have made
+my special province."
+
+"And yet," said I, smiling, "I cannot quite hold myself absolved
+from the charge of sensationalism which has been urged against my
+records."
+
+"You have erred, perhaps," he observed, taking up a glowing
+cinder with the tongs and lighting with it the long cherry-wood
+pipe which was wont to replace his clay when he was in a
+disputatious rather than a meditative mood--"you have erred
+perhaps in attempting to put colour and life into each of your
+statements instead of confining yourself to the task of placing
+upon record that severe reasoning from cause to effect which is
+really the only notable feature about the thing."
+
+"It seems to me that I have done you full justice in the matter,"
+I remarked with some coldness, for I was repelled by the egotism
+which I had more than once observed to be a strong factor in my
+friend's singular character.
+
+"No, it is not selfishness or conceit," said he, answering, as
+was his wont, my thoughts rather than my words. "If I claim full
+justice for my art, it is because it is an impersonal thing--a
+thing beyond myself. Crime is common. Logic is rare. Therefore it
+is upon the logic rather than upon the crime that you should
+dwell. You have degraded what should have been a course of
+lectures into a series of tales."
+
+It was a cold morning of the early spring, and we sat after
+breakfast on either side of a cheery fire in the old room at
+Baker Street. A thick fog rolled down between the lines of
+dun-coloured houses, and the opposing windows loomed like dark,
+shapeless blurs through the heavy yellow wreaths. Our gas was lit
+and shone on the white cloth and glimmer of china and metal, for
+the table had not been cleared yet. Sherlock Holmes had been
+silent all the morning, dipping continuously into the
+advertisement columns of a succession of papers until at last,
+having apparently given up his search, he had emerged in no very
+sweet temper to lecture me upon my literary shortcomings.
+
+"At the same time," he remarked after a pause, during which he
+had sat puffing at his long pipe and gazing down into the fire,
+"you can hardly be open to a charge of sensationalism, for out of
+these cases which you have been so kind as to interest yourself
+in, a fair proportion do not treat of crime, in its legal sense,
+at all. The small matter in which I endeavoured to help the King
+of Bohemia, the singular experience of Miss Mary Sutherland, the
+problem connected with the man with the twisted lip, and the
+incident of the noble bachelor, were all matters which are
+outside the pale of the law. But in avoiding the sensational, I
+fear that you may have bordered on the trivial."
+
+"The end may have been so," I answered, "but the methods I hold
+to have been novel and of interest."
+
+"Pshaw, my dear fellow, what do the public, the great unobservant
+public, who could hardly tell a weaver by his tooth or a
+compositor by his left thumb, care about the finer shades of
+analysis and deduction! But, indeed, if you are trivial, I cannot
+blame you, for the days of the great cases are past. Man, or at
+least criminal man, has lost all enterprise and originality. As
+to my own little practice, it seems to be degenerating into an
+agency for recovering lost lead pencils and giving advice to
+young ladies from boarding-schools. I think that I have touched
+bottom at last, however. This note I had this morning marks my
+zero-point, I fancy. Read it!" He tossed a crumpled letter across
+to me.
+
+It was dated from Montague Place upon the preceding evening, and
+ran thus:
+
+"DEAR MR. HOLMES:--I am very anxious to consult you as to whether
+I should or should not accept a situation which has been offered
+to me as governess. I shall call at half-past ten to-morrow if I
+do not inconvenience you. Yours faithfully,
+                                               "VIOLET HUNTER."
+
+"Do you know the young lady?" I asked.
+
+"Not I."
+
+"It is half-past ten now."
+
+"Yes, and I have no doubt that is her ring."
+
+"It may turn out to be of more interest than you think. You
+remember that the affair of the blue carbuncle, which appeared to
+be a mere whim at first, developed into a serious investigation.
+It may be so in this case, also."
+
+"Well, let us hope so. But our doubts will very soon be solved,
+for here, unless I am much mistaken, is the person in question."
+
+As he spoke the door opened and a young lady entered the room.
+She was plainly but neatly dressed, with a bright, quick face,
+freckled like a plover's egg, and with the brisk manner of a
+woman who has had her own way to make in the world.
+
+"You will excuse my troubling you, I am sure," said she, as my
+companion rose to greet her, "but I have had a very strange
+experience, and as I have no parents or relations of any sort
+from whom I could ask advice, I thought that perhaps you would be
+kind enough to tell me what I should do."
+
+"Pray take a seat, Miss Hunter. I shall be happy to do anything
+that I can to serve you."
+
+I could see that Holmes was favourably impressed by the manner
+and speech of his new client. He looked her over in his searching
+fashion, and then composed himself, with his lids drooping and
+his finger-tips together, to listen to her story.
+
+"I have been a governess for five years," said she, "in the
+family of Colonel Spence Munro, but two months ago the colonel
+received an appointment at Halifax, in Nova Scotia, and took his
+children over to America with him, so that I found myself without
+a situation. I advertised, and I answered advertisements, but
+without success. At last the little money which I had saved began
+to run short, and I was at my wit's end as to what I should do.
+
+"There is a well-known agency for governesses in the West End
+called Westaway's, and there I used to call about once a week in
+order to see whether anything had turned up which might suit me.
+Westaway was the name of the founder of the business, but it is
+really managed by Miss Stoper. She sits in her own little office,
+and the ladies who are seeking employment wait in an anteroom,
+and are then shown in one by one, when she consults her ledgers
+and sees whether she has anything which would suit them.
+
+"Well, when I called last week I was shown into the little office
+as usual, but I found that Miss Stoper was not alone. A
+prodigiously stout man with a very smiling face and a great heavy
+chin which rolled down in fold upon fold over his throat sat at
+her elbow with a pair of glasses on his nose, looking very
+earnestly at the ladies who entered. As I came in he gave quite a
+jump in his chair and turned quickly to Miss Stoper.
+
+"'That will do,' said he; 'I could not ask for anything better.
+Capital! capital!' He seemed quite enthusiastic and rubbed his
+hands together in the most genial fashion. He was such a
+comfortable-looking man that it was quite a pleasure to look at
+him.
+
+"'You are looking for a situation, miss?' he asked.
+
+"'Yes, sir.'
+
+"'As governess?'
+
+"'Yes, sir.'
+
+"'And what salary do you ask?'
+
+"'I had 4 pounds a month in my last place with Colonel Spence
+Munro.'
+
+"'Oh, tut, tut! sweating--rank sweating!' he cried, throwing his
+fat hands out into the air like a man who is in a boiling
+passion. 'How could anyone offer so pitiful a sum to a lady with
+such attractions and accomplishments?'
+
+"'My accomplishments, sir, may be less than you imagine,' said I.
+'A little French, a little German, music, and drawing--'
+
+"'Tut, tut!' he cried. 'This is all quite beside the question.
+The point is, have you or have you not the bearing and deportment
+of a lady? There it is in a nutshell. If you have not, you are
+not fitted for the rearing of a child who may some day play a
+considerable part in the history of the country. But if you have
+why, then, how could any gentleman ask you to condescend to
+accept anything under the three figures? Your salary with me,
+madam, would commence at 100 pounds a year.'
+
+"You may imagine, Mr. Holmes, that to me, destitute as I was,
+such an offer seemed almost too good to be true. The gentleman,
+however, seeing perhaps the look of incredulity upon my face,
+opened a pocket-book and took out a note.
+
+"'It is also my custom,' said he, smiling in the most pleasant
+fashion until his eyes were just two little shining slits amid
+the white creases of his face, 'to advance to my young ladies
+half their salary beforehand, so that they may meet any little
+expenses of their journey and their wardrobe.'
+
+"It seemed to me that I had never met so fascinating and so
+thoughtful a man. As I was already in debt to my tradesmen, the
+advance was a great convenience, and yet there was something
+unnatural about the whole transaction which made me wish to know
+a little more before I quite committed myself.
+
+"'May I ask where you live, sir?' said I.
+
+"'Hampshire. Charming rural place. The Copper Beeches, five miles
+on the far side of Winchester. It is the most lovely country, my
+dear young lady, and the dearest old country-house.'
+
+"'And my duties, sir? I should be glad to know what they would
+be.'
+
+"'One child--one dear little romper just six years old. Oh, if
+you could see him killing cockroaches with a slipper! Smack!
+smack! smack! Three gone before you could wink!' He leaned back
+in his chair and laughed his eyes into his head again.
+
+"I was a little startled at the nature of the child's amusement,
+but the father's laughter made me think that perhaps he was
+joking.
+
+"'My sole duties, then,' I asked, 'are to take charge of a single
+child?'
+
+"'No, no, not the sole, not the sole, my dear young lady,' he
+cried. 'Your duty would be, as I am sure your good sense would
+suggest, to obey any little commands my wife might give, provided
+always that they were such commands as a lady might with
+propriety obey. You see no difficulty, heh?'
+
+"'I should be happy to make myself useful.'
+
+"'Quite so. In dress now, for example. We are faddy people, you
+know--faddy but kind-hearted. If you were asked to wear any dress
+which we might give you, you would not object to our little whim.
+Heh?'
+
+"'No,' said I, considerably astonished at his words.
+
+"'Or to sit here, or sit there, that would not be offensive to
+you?'
+
+"'Oh, no.'
+
+"'Or to cut your hair quite short before you come to us?'
+
+"I could hardly believe my ears. As you may observe, Mr. Holmes,
+my hair is somewhat luxuriant, and of a rather peculiar tint of
+chestnut. It has been considered artistic. I could not dream of
+sacrificing it in this offhand fashion.
+
+"'I am afraid that that is quite impossible,' said I. He had been
+watching me eagerly out of his small eyes, and I could see a
+shadow pass over his face as I spoke.
+
+"'I am afraid that it is quite essential,' said he. 'It is a
+little fancy of my wife's, and ladies' fancies, you know, madam,
+ladies' fancies must be consulted. And so you won't cut your
+hair?'
+
+"'No, sir, I really could not,' I answered firmly.
+
+"'Ah, very well; then that quite settles the matter. It is a
+pity, because in other respects you would really have done very
+nicely. In that case, Miss Stoper, I had best inspect a few more
+of your young ladies.'
+
+"The manageress had sat all this while busy with her papers
+without a word to either of us, but she glanced at me now with so
+much annoyance upon her face that I could not help suspecting
+that she had lost a handsome commission through my refusal.
+
+"'Do you desire your name to be kept upon the books?' she asked.
+
+"'If you please, Miss Stoper.'
+
+"'Well, really, it seems rather useless, since you refuse the
+most excellent offers in this fashion,' said she sharply. 'You
+can hardly expect us to exert ourselves to find another such
+opening for you. Good-day to you, Miss Hunter.' She struck a gong
+upon the table, and I was shown out by the page.
+
+"Well, Mr. Holmes, when I got back to my lodgings and found
+little enough in the cupboard, and two or three bills upon the
+table, I began to ask myself whether I had not done a very
+foolish thing. After all, if these people had strange fads and
+expected obedience on the most extraordinary matters, they were
+at least ready to pay for their eccentricity. Very few
+governesses in England are getting 100 pounds a year. Besides,
+what use was my hair to me? Many people are improved by wearing
+it short and perhaps I should be among the number. Next day I was
+inclined to think that I had made a mistake, and by the day after
+I was sure of it. I had almost overcome my pride so far as to go
+back to the agency and inquire whether the place was still open
+when I received this letter from the gentleman himself. I have it
+here and I will read it to you:
+
+                       "'The Copper Beeches, near Winchester.
+"'DEAR MISS HUNTER:--Miss Stoper has very kindly given me your
+address, and I write from here to ask you whether you have
+reconsidered your decision. My wife is very anxious that you
+should come, for she has been much attracted by my description of
+you. We are willing to give 30 pounds a quarter, or 120 pounds a
+year, so as to recompense you for any little inconvenience which
+our fads may cause you. They are not very exacting, after all. My
+wife is fond of a particular shade of electric blue and would
+like you to wear such a dress indoors in the morning. You need
+not, however, go to the expense of purchasing one, as we have one
+belonging to my dear daughter Alice (now in Philadelphia), which
+would, I should think, fit you very well. Then, as to sitting
+here or there, or amusing yourself in any manner indicated, that
+need cause you no inconvenience. As regards your hair, it is no
+doubt a pity, especially as I could not help remarking its beauty
+during our short interview, but I am afraid that I must remain
+firm upon this point, and I only hope that the increased salary
+may recompense you for the loss. Your duties, as far as the child
+is concerned, are very light. Now do try to come, and I shall
+meet you with the dog-cart at Winchester. Let me know your train.
+Yours faithfully, JEPHRO RUCASTLE.'
+
+"That is the letter which I have just received, Mr. Holmes, and
+my mind is made up that I will accept it. I thought, however,
+that before taking the final step I should like to submit the
+whole matter to your consideration."
+
+"Well, Miss Hunter, if your mind is made up, that settles the
+question," said Holmes, smiling.
+
+"But you would not advise me to refuse?"
+
+"I confess that it is not the situation which I should like to
+see a sister of mine apply for."
+
+"What is the meaning of it all, Mr. Holmes?"
+
+"Ah, I have no data. I cannot tell. Perhaps you have yourself
+formed some opinion?"
+
+"Well, there seems to me to be only one possible solution. Mr.
+Rucastle seemed to be a very kind, good-natured man. Is it not
+possible that his wife is a lunatic, that he desires to keep the
+matter quiet for fear she should be taken to an asylum, and that
+he humours her fancies in every way in order to prevent an
+outbreak?"
+
+"That is a possible solution--in fact, as matters stand, it is
+the most probable one. But in any case it does not seem to be a
+nice household for a young lady."
+
+"But the money, Mr. Holmes, the money!"
+
+"Well, yes, of course the pay is good--too good. That is what
+makes me uneasy. Why should they give you 120 pounds a year, when
+they could have their pick for 40 pounds? There must be some
+strong reason behind."
+
+"I thought that if I told you the circumstances you would
+understand afterwards if I wanted your help. I should feel so
+much stronger if I felt that you were at the back of me."
+
+"Oh, you may carry that feeling away with you. I assure you that
+your little problem promises to be the most interesting which has
+come my way for some months. There is something distinctly novel
+about some of the features. If you should find yourself in doubt
+or in danger--"
+
+"Danger! What danger do you foresee?"
+
+Holmes shook his head gravely. "It would cease to be a danger if
+we could define it," said he. "But at any time, day or night, a
+telegram would bring me down to your help."
+
+"That is enough." She rose briskly from her chair with the
+anxiety all swept from her face. "I shall go down to Hampshire
+quite easy in my mind now. I shall write to Mr. Rucastle at once,
+sacrifice my poor hair to-night, and start for Winchester
+to-morrow." With a few grateful words to Holmes she bade us both
+good-night and bustled off upon her way.
+
+"At least," said I as we heard her quick, firm steps descending
+the stairs, "she seems to be a young lady who is very well able
+to take care of herself."
+
+"And she would need to be," said Holmes gravely. "I am much
+mistaken if we do not hear from her before many days are past."
+
+It was not very long before my friend's prediction was fulfilled.
+A fortnight went by, during which I frequently found my thoughts
+turning in her direction and wondering what strange side-alley of
+human experience this lonely woman had strayed into. The unusual
+salary, the curious conditions, the light duties, all pointed to
+something abnormal, though whether a fad or a plot, or whether
+the man were a philanthropist or a villain, it was quite beyond
+my powers to determine. As to Holmes, I observed that he sat
+frequently for half an hour on end, with knitted brows and an
+abstracted air, but he swept the matter away with a wave of his
+hand when I mentioned it. "Data! data! data!" he cried
+impatiently. "I can't make bricks without clay." And yet he would
+always wind up by muttering that no sister of his should ever
+have accepted such a situation.
+
+The telegram which we eventually received came late one night
+just as I was thinking of turning in and Holmes was settling down
+to one of those all-night chemical researches which he frequently
+indulged in, when I would leave him stooping over a retort and a
+test-tube at night and find him in the same position when I came
+down to breakfast in the morning. He opened the yellow envelope,
+and then, glancing at the message, threw it across to me.
+
+"Just look up the trains in Bradshaw," said he, and turned back
+to his chemical studies.
+
+The summons was a brief and urgent one.
+
+"Please be at the Black Swan Hotel at Winchester at midday
+to-morrow," it said. "Do come! I am at my wit's end.  HUNTER."
+
+"Will you come with me?" asked Holmes, glancing up.
+
+"I should wish to."
+
+"Just look it up, then."
+
+"There is a train at half-past nine," said I, glancing over my
+Bradshaw. "It is due at Winchester at 11:30."
+
+"That will do very nicely. Then perhaps I had better postpone my
+analysis of the acetones, as we may need to be at our best in the
+morning."
+
+By eleven o'clock the next day we were well upon our way to the
+old English capital. Holmes had been buried in the morning papers
+all the way down, but after we had passed the Hampshire border he
+threw them down and began to admire the scenery. It was an ideal
+spring day, a light blue sky, flecked with little fleecy white
+clouds drifting across from west to east. The sun was shining
+very brightly, and yet there was an exhilarating nip in the air,
+which set an edge to a man's energy. All over the countryside,
+away to the rolling hills around Aldershot, the little red and
+grey roofs of the farm-steadings peeped out from amid the light
+green of the new foliage.
+
+"Are they not fresh and beautiful?" I cried with all the
+enthusiasm of a man fresh from the fogs of Baker Street.
+
+But Holmes shook his head gravely.
+
+"Do you know, Watson," said he, "that it is one of the curses of
+a mind with a turn like mine that I must look at everything with
+reference to my own special subject. You look at these scattered
+houses, and you are impressed by their beauty. I look at them,
+and the only thought which comes to me is a feeling of their
+isolation and of the impunity with which crime may be committed
+there."
+
+"Good heavens!" I cried. "Who would associate crime with these
+dear old homesteads?"
+
+"They always fill me with a certain horror. It is my belief,
+Watson, founded upon my experience, that the lowest and vilest
+alleys in London do not present a more dreadful record of sin
+than does the smiling and beautiful countryside."
+
+"You horrify me!"
+
+"But the reason is very obvious. The pressure of public opinion
+can do in the town what the law cannot accomplish. There is no
+lane so vile that the scream of a tortured child, or the thud of
+a drunkard's blow, does not beget sympathy and indignation among
+the neighbours, and then the whole machinery of justice is ever
+so close that a word of complaint can set it going, and there is
+but a step between the crime and the dock. But look at these
+lonely houses, each in its own fields, filled for the most part
+with poor ignorant folk who know little of the law. Think of the
+deeds of hellish cruelty, the hidden wickedness which may go on,
+year in, year out, in such places, and none the wiser. Had this
+lady who appeals to us for help gone to live in Winchester, I
+should never have had a fear for her. It is the five miles of
+country which makes the danger. Still, it is clear that she is
+not personally threatened."
+
+"No. If she can come to Winchester to meet us she can get away."
+
+"Quite so. She has her freedom."
+
+"What CAN be the matter, then? Can you suggest no explanation?"
+
+"I have devised seven separate explanations, each of which would
+cover the facts as far as we know them. But which of these is
+correct can only be determined by the fresh information which we
+shall no doubt find waiting for us. Well, there is the tower of
+the cathedral, and we shall soon learn all that Miss Hunter has
+to tell."
+
+The Black Swan is an inn of repute in the High Street, at no
+distance from the station, and there we found the young lady
+waiting for us. She had engaged a sitting-room, and our lunch
+awaited us upon the table.
+
+"I am so delighted that you have come," she said earnestly. "It
+is so very kind of you both; but indeed I do not know what I
+should do. Your advice will be altogether invaluable to me."
+
+"Pray tell us what has happened to you."
+
+"I will do so, and I must be quick, for I have promised Mr.
+Rucastle to be back before three. I got his leave to come into
+town this morning, though he little knew for what purpose."
+
+"Let us have everything in its due order." Holmes thrust his long
+thin legs out towards the fire and composed himself to listen.
+
+"In the first place, I may say that I have met, on the whole,
+with no actual ill-treatment from Mr. and Mrs. Rucastle. It is
+only fair to them to say that. But I cannot understand them, and
+I am not easy in my mind about them."
+
+"What can you not understand?"
+
+"Their reasons for their conduct. But you shall have it all just
+as it occurred. When I came down, Mr. Rucastle met me here and
+drove me in his dog-cart to the Copper Beeches. It is, as he
+said, beautifully situated, but it is not beautiful in itself,
+for it is a large square block of a house, whitewashed, but all
+stained and streaked with damp and bad weather. There are grounds
+round it, woods on three sides, and on the fourth a field which
+slopes down to the Southampton highroad, which curves past about
+a hundred yards from the front door. This ground in front belongs
+to the house, but the woods all round are part of Lord
+Southerton's preserves. A clump of copper beeches immediately in
+front of the hall door has given its name to the place.
+
+"I was driven over by my employer, who was as amiable as ever,
+and was introduced by him that evening to his wife and the child.
+There was no truth, Mr. Holmes, in the conjecture which seemed to
+us to be probable in your rooms at Baker Street. Mrs. Rucastle is
+not mad. I found her to be a silent, pale-faced woman, much
+younger than her husband, not more than thirty, I should think,
+while he can hardly be less than forty-five. From their
+conversation I have gathered that they have been married about
+seven years, that he was a widower, and that his only child by
+the first wife was the daughter who has gone to Philadelphia. Mr.
+Rucastle told me in private that the reason why she had left them
+was that she had an unreasoning aversion to her stepmother. As
+the daughter could not have been less than twenty, I can quite
+imagine that her position must have been uncomfortable with her
+father's young wife.
+
+"Mrs. Rucastle seemed to me to be colourless in mind as well as
+in feature. She impressed me neither favourably nor the reverse.
+She was a nonentity. It was easy to see that she was passionately
+devoted both to her husband and to her little son. Her light grey
+eyes wandered continually from one to the other, noting every
+little want and forestalling it if possible. He was kind to her
+also in his bluff, boisterous fashion, and on the whole they
+seemed to be a happy couple. And yet she had some secret sorrow,
+this woman. She would often be lost in deep thought, with the
+saddest look upon her face. More than once I have surprised her
+in tears. I have thought sometimes that it was the disposition of
+her child which weighed upon her mind, for I have never met so
+utterly spoiled and so ill-natured a little creature. He is small
+for his age, with a head which is quite disproportionately large.
+His whole life appears to be spent in an alternation between
+savage fits of passion and gloomy intervals of sulking. Giving
+pain to any creature weaker than himself seems to be his one idea
+of amusement, and he shows quite remarkable talent in planning
+the capture of mice, little birds, and insects. But I would
+rather not talk about the creature, Mr. Holmes, and, indeed, he
+has little to do with my story."
+
+"I am glad of all details," remarked my friend, "whether they
+seem to you to be relevant or not."
+
+"I shall try not to miss anything of importance. The one
+unpleasant thing about the house, which struck me at once, was
+the appearance and conduct of the servants. There are only two, a
+man and his wife. Toller, for that is his name, is a rough,
+uncouth man, with grizzled hair and whiskers, and a perpetual
+smell of drink. Twice since I have been with them he has been
+quite drunk, and yet Mr. Rucastle seemed to take no notice of it.
+His wife is a very tall and strong woman with a sour face, as
+silent as Mrs. Rucastle and much less amiable. They are a most
+unpleasant couple, but fortunately I spend most of my time in the
+nursery and my own room, which are next to each other in one
+corner of the building.
+
+"For two days after my arrival at the Copper Beeches my life was
+very quiet; on the third, Mrs. Rucastle came down just after
+breakfast and whispered something to her husband.
+
+"'Oh, yes,' said he, turning to me, 'we are very much obliged to
+you, Miss Hunter, for falling in with our whims so far as to cut
+your hair. I assure you that it has not detracted in the tiniest
+iota from your appearance. We shall now see how the electric-blue
+dress will become you. You will find it laid out upon the bed in
+your room, and if you would be so good as to put it on we should
+both be extremely obliged.'
+
+"The dress which I found waiting for me was of a peculiar shade
+of blue. It was of excellent material, a sort of beige, but it
+bore unmistakable signs of having been worn before. It could not
+have been a better fit if I had been measured for it. Both Mr.
+and Mrs. Rucastle expressed a delight at the look of it, which
+seemed quite exaggerated in its vehemence. They were waiting for
+me in the drawing-room, which is a very large room, stretching
+along the entire front of the house, with three long windows
+reaching down to the floor. A chair had been placed close to the
+central window, with its back turned towards it. In this I was
+asked to sit, and then Mr. Rucastle, walking up and down on the
+other side of the room, began to tell me a series of the funniest
+stories that I have ever listened to. You cannot imagine how
+comical he was, and I laughed until I was quite weary. Mrs.
+Rucastle, however, who has evidently no sense of humour, never so
+much as smiled, but sat with her hands in her lap, and a sad,
+anxious look upon her face. After an hour or so, Mr. Rucastle
+suddenly remarked that it was time to commence the duties of the
+day, and that I might change my dress and go to little Edward in
+the nursery.
+
+"Two days later this same performance was gone through under
+exactly similar circumstances. Again I changed my dress, again I
+sat in the window, and again I laughed very heartily at the funny
+stories of which my employer had an immense répertoire, and which
+he told inimitably. Then he handed me a yellow-backed novel, and
+moving my chair a little sideways, that my own shadow might not
+fall upon the page, he begged me to read aloud to him. I read for
+about ten minutes, beginning in the heart of a chapter, and then
+suddenly, in the middle of a sentence, he ordered me to cease and
+to change my dress.
+
+"You can easily imagine, Mr. Holmes, how curious I became as to
+what the meaning of this extraordinary performance could possibly
+be. They were always very careful, I observed, to turn my face
+away from the window, so that I became consumed with the desire
+to see what was going on behind my back. At first it seemed to be
+impossible, but I soon devised a means. My hand-mirror had been
+broken, so a happy thought seized me, and I concealed a piece of
+the glass in my handkerchief. On the next occasion, in the midst
+of my laughter, I put my handkerchief up to my eyes, and was able
+with a little management to see all that there was behind me. I
+confess that I was disappointed. There was nothing. At least that
+was my first impression. At the second glance, however, I
+perceived that there was a man standing in the Southampton Road,
+a small bearded man in a grey suit, who seemed to be looking in
+my direction. The road is an important highway, and there are
+usually people there. This man, however, was leaning against the
+railings which bordered our field and was looking earnestly up. I
+lowered my handkerchief and glanced at Mrs. Rucastle to find her
+eyes fixed upon me with a most searching gaze. She said nothing,
+but I am convinced that she had divined that I had a mirror in my
+hand and had seen what was behind me. She rose at once.
+
+"'Jephro,' said she, 'there is an impertinent fellow upon the
+road there who stares up at Miss Hunter.'
+
+"'No friend of yours, Miss Hunter?' he asked.
+
+"'No, I know no one in these parts.'
+
+"'Dear me! How very impertinent! Kindly turn round and motion to
+him to go away.'
+
+"'Surely it would be better to take no notice.'
+
+"'No, no, we should have him loitering here always. Kindly turn
+round and wave him away like that.'
+
+"I did as I was told, and at the same instant Mrs. Rucastle drew
+down the blind. That was a week ago, and from that time I have
+not sat again in the window, nor have I worn the blue dress, nor
+seen the man in the road."
+
+"Pray continue," said Holmes. "Your narrative promises to be a
+most interesting one."
+
+"You will find it rather disconnected, I fear, and there may
+prove to be little relation between the different incidents of
+which I speak. On the very first day that I was at the Copper
+Beeches, Mr. Rucastle took me to a small outhouse which stands
+near the kitchen door. As we approached it I heard the sharp
+rattling of a chain, and the sound as of a large animal moving
+about.
+
+"'Look in here!' said Mr. Rucastle, showing me a slit between two
+planks. 'Is he not a beauty?'
+
+"I looked through and was conscious of two glowing eyes, and of a
+vague figure huddled up in the darkness.
+
+"'Don't be frightened,' said my employer, laughing at the start
+which I had given. 'It's only Carlo, my mastiff. I call him mine,
+but really old Toller, my groom, is the only man who can do
+anything with him. We feed him once a day, and not too much then,
+so that he is always as keen as mustard. Toller lets him loose
+every night, and God help the trespasser whom he lays his fangs
+upon. For goodness' sake don't you ever on any pretext set your
+foot over the threshold at night, for it's as much as your life
+is worth.'
+
+"The warning was no idle one, for two nights later I happened to
+look out of my bedroom window about two o'clock in the morning.
+It was a beautiful moonlight night, and the lawn in front of the
+house was silvered over and almost as bright as day. I was
+standing, rapt in the peaceful beauty of the scene, when I was
+aware that something was moving under the shadow of the copper
+beeches. As it emerged into the moonshine I saw what it was. It
+was a giant dog, as large as a calf, tawny tinted, with hanging
+jowl, black muzzle, and huge projecting bones. It walked slowly
+across the lawn and vanished into the shadow upon the other side.
+That dreadful sentinel sent a chill to my heart which I do not
+think that any burglar could have done.
+
+"And now I have a very strange experience to tell you. I had, as
+you know, cut off my hair in London, and I had placed it in a
+great coil at the bottom of my trunk. One evening, after the
+child was in bed, I began to amuse myself by examining the
+furniture of my room and by rearranging my own little things.
+There was an old chest of drawers in the room, the two upper ones
+empty and open, the lower one locked. I had filled the first two
+with my linen, and as I had still much to pack away I was
+naturally annoyed at not having the use of the third drawer. It
+struck me that it might have been fastened by a mere oversight,
+so I took out my bunch of keys and tried to open it. The very
+first key fitted to perfection, and I drew the drawer open. There
+was only one thing in it, but I am sure that you would never
+guess what it was. It was my coil of hair.
+
+"I took it up and examined it. It was of the same peculiar tint,
+and the same thickness. But then the impossibility of the thing
+obtruded itself upon me. How could my hair have been locked in
+the drawer? With trembling hands I undid my trunk, turned out the
+contents, and drew from the bottom my own hair. I laid the two
+tresses together, and I assure you that they were identical. Was
+it not extraordinary? Puzzle as I would, I could make nothing at
+all of what it meant. I returned the strange hair to the drawer,
+and I said nothing of the matter to the Rucastles as I felt that
+I had put myself in the wrong by opening a drawer which they had
+locked.
+
+"I am naturally observant, as you may have remarked, Mr. Holmes,
+and I soon had a pretty good plan of the whole house in my head.
+There was one wing, however, which appeared not to be inhabited
+at all. A door which faced that which led into the quarters of
+the Tollers opened into this suite, but it was invariably locked.
+One day, however, as I ascended the stair, I met Mr. Rucastle
+coming out through this door, his keys in his hand, and a look on
+his face which made him a very different person to the round,
+jovial man to whom I was accustomed. His cheeks were red, his
+brow was all crinkled with anger, and the veins stood out at his
+temples with passion. He locked the door and hurried past me
+without a word or a look.
+
+"This aroused my curiosity, so when I went out for a walk in the
+grounds with my charge, I strolled round to the side from which I
+could see the windows of this part of the house. There were four
+of them in a row, three of which were simply dirty, while the
+fourth was shuttered up. They were evidently all deserted. As I
+strolled up and down, glancing at them occasionally, Mr. Rucastle
+came out to me, looking as merry and jovial as ever.
+
+"'Ah!' said he, 'you must not think me rude if I passed you
+without a word, my dear young lady. I was preoccupied with
+business matters.'
+
+"I assured him that I was not offended. 'By the way,' said I,
+'you seem to have quite a suite of spare rooms up there, and one
+of them has the shutters up.'
+
+"He looked surprised and, as it seemed to me, a little startled
+at my remark.
+
+"'Photography is one of my hobbies,' said he. 'I have made my
+dark room up there. But, dear me! what an observant young lady we
+have come upon. Who would have believed it? Who would have ever
+believed it?' He spoke in a jesting tone, but there was no jest
+in his eyes as he looked at me. I read suspicion there and
+annoyance, but no jest.
+
+"Well, Mr. Holmes, from the moment that I understood that there
+was something about that suite of rooms which I was not to know,
+I was all on fire to go over them. It was not mere curiosity,
+though I have my share of that. It was more a feeling of duty--a
+feeling that some good might come from my penetrating to this
+place. They talk of woman's instinct; perhaps it was woman's
+instinct which gave me that feeling. At any rate, it was there,
+and I was keenly on the lookout for any chance to pass the
+forbidden door.
+
+"It was only yesterday that the chance came. I may tell you that,
+besides Mr. Rucastle, both Toller and his wife find something to
+do in these deserted rooms, and I once saw him carrying a large
+black linen bag with him through the door. Recently he has been
+drinking hard, and yesterday evening he was very drunk; and when
+I came upstairs there was the key in the door. I have no doubt at
+all that he had left it there. Mr. and Mrs. Rucastle were both
+downstairs, and the child was with them, so that I had an
+admirable opportunity. I turned the key gently in the lock,
+opened the door, and slipped through.
+
+"There was a little passage in front of me, unpapered and
+uncarpeted, which turned at a right angle at the farther end.
+Round this corner were three doors in a line, the first and third
+of which were open. They each led into an empty room, dusty and
+cheerless, with two windows in the one and one in the other, so
+thick with dirt that the evening light glimmered dimly through
+them. The centre door was closed, and across the outside of it
+had been fastened one of the broad bars of an iron bed, padlocked
+at one end to a ring in the wall, and fastened at the other with
+stout cord. The door itself was locked as well, and the key was
+not there. This barricaded door corresponded clearly with the
+shuttered window outside, and yet I could see by the glimmer from
+beneath it that the room was not in darkness. Evidently there was
+a skylight which let in light from above. As I stood in the
+passage gazing at the sinister door and wondering what secret it
+might veil, I suddenly heard the sound of steps within the room
+and saw a shadow pass backward and forward against the little
+slit of dim light which shone out from under the door. A mad,
+unreasoning terror rose up in me at the sight, Mr. Holmes. My
+overstrung nerves failed me suddenly, and I turned and ran--ran
+as though some dreadful hand were behind me clutching at the
+skirt of my dress. I rushed down the passage, through the door,
+and straight into the arms of Mr. Rucastle, who was waiting
+outside.
+
+"'So,' said he, smiling, 'it was you, then. I thought that it
+must be when I saw the door open.'
+
+"'Oh, I am so frightened!' I panted.
+
+"'My dear young lady! my dear young lady!'--you cannot think how
+caressing and soothing his manner was--'and what has frightened
+you, my dear young lady?'
+
+"But his voice was just a little too coaxing. He overdid it. I
+was keenly on my guard against him.
+
+"'I was foolish enough to go into the empty wing,' I answered.
+'But it is so lonely and eerie in this dim light that I was
+frightened and ran out again. Oh, it is so dreadfully still in
+there!'
+
+"'Only that?' said he, looking at me keenly.
+
+"'Why, what did you think?' I asked.
+
+"'Why do you think that I lock this door?'
+
+"'I am sure that I do not know.'
+
+"'It is to keep people out who have no business there. Do you
+see?' He was still smiling in the most amiable manner.
+
+"'I am sure if I had known--'
+
+"'Well, then, you know now. And if you ever put your foot over
+that threshold again'--here in an instant the smile hardened into
+a grin of rage, and he glared down at me with the face of a
+demon--'I'll throw you to the mastiff.'
+
+"I was so terrified that I do not know what I did. I suppose that
+I must have rushed past him into my room. I remember nothing
+until I found myself lying on my bed trembling all over. Then I
+thought of you, Mr. Holmes. I could not live there longer without
+some advice. I was frightened of the house, of the man, of the
+woman, of the servants, even of the child. They were all horrible
+to me. If I could only bring you down all would be well. Of
+course I might have fled from the house, but my curiosity was
+almost as strong as my fears. My mind was soon made up. I would
+send you a wire. I put on my hat and cloak, went down to the
+office, which is about half a mile from the house, and then
+returned, feeling very much easier. A horrible doubt came into my
+mind as I approached the door lest the dog might be loose, but I
+remembered that Toller had drunk himself into a state of
+insensibility that evening, and I knew that he was the only one
+in the household who had any influence with the savage creature,
+or who would venture to set him free. I slipped in in safety and
+lay awake half the night in my joy at the thought of seeing you.
+I had no difficulty in getting leave to come into Winchester this
+morning, but I must be back before three o'clock, for Mr. and
+Mrs. Rucastle are going on a visit, and will be away all the
+evening, so that I must look after the child. Now I have told you
+all my adventures, Mr. Holmes, and I should be very glad if you
+could tell me what it all means, and, above all, what I should
+do."
+
+Holmes and I had listened spellbound to this extraordinary story.
+My friend rose now and paced up and down the room, his hands in
+his pockets, and an expression of the most profound gravity upon
+his face.
+
+"Is Toller still drunk?" he asked.
+
+"Yes. I heard his wife tell Mrs. Rucastle that she could do
+nothing with him."
+
+"That is well. And the Rucastles go out to-night?"
+
+"Yes."
+
+"Is there a cellar with a good strong lock?"
+
+"Yes, the wine-cellar."
+
+"You seem to me to have acted all through this matter like a very
+brave and sensible girl, Miss Hunter. Do you think that you could
+perform one more feat? I should not ask it of you if I did not
+think you a quite exceptional woman."
+
+"I will try. What is it?"
+
+"We shall be at the Copper Beeches by seven o'clock, my friend
+and I. The Rucastles will be gone by that time, and Toller will,
+we hope, be incapable. There only remains Mrs. Toller, who might
+give the alarm. If you could send her into the cellar on some
+errand, and then turn the key upon her, you would facilitate
+matters immensely."
+
+"I will do it."
+
+"Excellent! We shall then look thoroughly into the affair. Of
+course there is only one feasible explanation. You have been
+brought there to personate someone, and the real person is
+imprisoned in this chamber. That is obvious. As to who this
+prisoner is, I have no doubt that it is the daughter, Miss Alice
+Rucastle, if I remember right, who was said to have gone to
+America. You were chosen, doubtless, as resembling her in height,
+figure, and the colour of your hair. Hers had been cut off, very
+possibly in some illness through which she has passed, and so, of
+course, yours had to be sacrificed also. By a curious chance you
+came upon her tresses. The man in the road was undoubtedly some
+friend of hers--possibly her fiancé--and no doubt, as you wore
+the girl's dress and were so like her, he was convinced from your
+laughter, whenever he saw you, and afterwards from your gesture,
+that Miss Rucastle was perfectly happy, and that she no longer
+desired his attentions. The dog is let loose at night to prevent
+him from endeavouring to communicate with her. So much is fairly
+clear. The most serious point in the case is the disposition of
+the child."
+
+"What on earth has that to do with it?" I ejaculated.
+
+"My dear Watson, you as a medical man are continually gaining
+light as to the tendencies of a child by the study of the
+parents. Don't you see that the converse is equally valid. I have
+frequently gained my first real insight into the character of
+parents by studying their children. This child's disposition is
+abnormally cruel, merely for cruelty's sake, and whether he
+derives this from his smiling father, as I should suspect, or
+from his mother, it bodes evil for the poor girl who is in their
+power."
+
+"I am sure that you are right, Mr. Holmes," cried our client. "A
+thousand things come back to me which make me certain that you
+have hit it. Oh, let us lose not an instant in bringing help to
+this poor creature."
+
+"We must be circumspect, for we are dealing with a very cunning
+man. We can do nothing until seven o'clock. At that hour we shall
+be with you, and it will not be long before we solve the
+mystery."
+
+We were as good as our word, for it was just seven when we
+reached the Copper Beeches, having put up our trap at a wayside
+public-house. The group of trees, with their dark leaves shining
+like burnished metal in the light of the setting sun, were
+sufficient to mark the house even had Miss Hunter not been
+standing smiling on the door-step.
+
+"Have you managed it?" asked Holmes.
+
+A loud thudding noise came from somewhere downstairs. "That is
+Mrs. Toller in the cellar," said she. "Her husband lies snoring
+on the kitchen rug. Here are his keys, which are the duplicates
+of Mr. Rucastle's."
+
+"You have done well indeed!" cried Holmes with enthusiasm. "Now
+lead the way, and we shall soon see the end of this black
+business."
+
+We passed up the stair, unlocked the door, followed on down a
+passage, and found ourselves in front of the barricade which Miss
+Hunter had described. Holmes cut the cord and removed the
+transverse bar. Then he tried the various keys in the lock, but
+without success. No sound came from within, and at the silence
+Holmes' face clouded over.
+
+"I trust that we are not too late," said he. "I think, Miss
+Hunter, that we had better go in without you. Now, Watson, put
+your shoulder to it, and we shall see whether we cannot make our
+way in."
+
+It was an old rickety door and gave at once before our united
+strength. Together we rushed into the room. It was empty. There
+was no furniture save a little pallet bed, a small table, and a
+basketful of linen. The skylight above was open, and the prisoner
+gone.
+
+"There has been some villainy here," said Holmes; "this beauty
+has guessed Miss Hunter's intentions and has carried his victim
+off."
+
+"But how?"
+
+"Through the skylight. We shall soon see how he managed it." He
+swung himself up onto the roof. "Ah, yes," he cried, "here's the
+end of a long light ladder against the eaves. That is how he did
+it."
+
+"But it is impossible," said Miss Hunter; "the ladder was not
+there when the Rucastles went away."
+
+"He has come back and done it. I tell you that he is a clever and
+dangerous man. I should not be very much surprised if this were
+he whose step I hear now upon the stair. I think, Watson, that it
+would be as well for you to have your pistol ready."
+
+The words were hardly out of his mouth before a man appeared at
+the door of the room, a very fat and burly man, with a heavy
+stick in his hand. Miss Hunter screamed and shrunk against the
+wall at the sight of him, but Sherlock Holmes sprang forward and
+confronted him.
+
+"You villain!" said he, "where's your daughter?"
+
+The fat man cast his eyes round, and then up at the open
+skylight.
+
+"It is for me to ask you that," he shrieked, "you thieves! Spies
+and thieves! I have caught you, have I? You are in my power. I'll
+serve you!" He turned and clattered down the stairs as hard as he
+could go.
+
+"He's gone for the dog!" cried Miss Hunter.
+
+"I have my revolver," said I.
+
+"Better close the front door," cried Holmes, and we all rushed
+down the stairs together. We had hardly reached the hall when we
+heard the baying of a hound, and then a scream of agony, with a
+horrible worrying sound which it was dreadful to listen to. An
+elderly man with a red face and shaking limbs came staggering out
+at a side door.
+
+"My God!" he cried. "Someone has loosed the dog. It's not been
+fed for two days. Quick, quick, or it'll be too late!"
+
+Holmes and I rushed out and round the angle of the house, with
+Toller hurrying behind us. There was the huge famished brute, its
+black muzzle buried in Rucastle's throat, while he writhed and
+screamed upon the ground. Running up, I blew its brains out, and
+it fell over with its keen white teeth still meeting in the great
+creases of his neck. With much labour we separated them and
+carried him, living but horribly mangled, into the house. We laid
+him upon the drawing-room sofa, and having dispatched the sobered
+Toller to bear the news to his wife, I did what I could to
+relieve his pain. We were all assembled round him when the door
+opened, and a tall, gaunt woman entered the room.
+
+"Mrs. Toller!" cried Miss Hunter.
+
+"Yes, miss. Mr. Rucastle let me out when he came back before he
+went up to you. Ah, miss, it is a pity you didn't let me know
+what you were planning, for I would have told you that your pains
+were wasted."
+
+"Ha!" said Holmes, looking keenly at her. "It is clear that Mrs.
+Toller knows more about this matter than anyone else."
+
+"Yes, sir, I do, and I am ready enough to tell what I know."
+
+"Then, pray, sit down, and let us hear it for there are several
+points on which I must confess that I am still in the dark."
+
+"I will soon make it clear to you," said she; "and I'd have done
+so before now if I could ha' got out from the cellar. If there's
+police-court business over this, you'll remember that I was the
+one that stood your friend, and that I was Miss Alice's friend
+too.
+
+"She was never happy at home, Miss Alice wasn't, from the time
+that her father married again. She was slighted like and had no
+say in anything, but it never really became bad for her until
+after she met Mr. Fowler at a friend's house. As well as I could
+learn, Miss Alice had rights of her own by will, but she was so
+quiet and patient, she was, that she never said a word about them
+but just left everything in Mr. Rucastle's hands. He knew he was
+safe with her; but when there was a chance of a husband coming
+forward, who would ask for all that the law would give him, then
+her father thought it time to put a stop on it. He wanted her to
+sign a paper, so that whether she married or not, he could use
+her money. When she wouldn't do it, he kept on worrying her until
+she got brain-fever, and for six weeks was at death's door. Then
+she got better at last, all worn to a shadow, and with her
+beautiful hair cut off; but that didn't make no change in her
+young man, and he stuck to her as true as man could be."
+
+"Ah," said Holmes, "I think that what you have been good enough
+to tell us makes the matter fairly clear, and that I can deduce
+all that remains. Mr. Rucastle then, I presume, took to this
+system of imprisonment?"
+
+"Yes, sir."
+
+"And brought Miss Hunter down from London in order to get rid of
+the disagreeable persistence of Mr. Fowler."
+
+"That was it, sir."
+
+"But Mr. Fowler being a persevering man, as a good seaman should
+be, blockaded the house, and having met you succeeded by certain
+arguments, metallic or otherwise, in convincing you that your
+interests were the same as his."
+
+"Mr. Fowler was a very kind-spoken, free-handed gentleman," said
+Mrs. Toller serenely.
+
+"And in this way he managed that your good man should have no
+want of drink, and that a ladder should be ready at the moment
+when your master had gone out."
+
+"You have it, sir, just as it happened."
+
+"I am sure we owe you an apology, Mrs. Toller," said Holmes, "for
+you have certainly cleared up everything which puzzled us. And
+here comes the country surgeon and Mrs. Rucastle, so I think,
+Watson, that we had best escort Miss Hunter back to Winchester,
+as it seems to me that our locus standi now is rather a
+questionable one."
+
+And thus was solved the mystery of the sinister house with the
+copper beeches in front of the door. Mr. Rucastle survived, but
+was always a broken man, kept alive solely through the care of
+his devoted wife. They still live with their old servants, who
+probably know so much of Rucastle's past life that he finds it
+difficult to part from them. Mr. Fowler and Miss Rucastle were
+married, by special license, in Southampton the day after their
+flight, and he is now the holder of a government appointment in
+the island of Mauritius. As to Miss Violet Hunter, my friend
+Holmes, rather to my disappointment, manifested no further
+interest in her when once she had ceased to be the centre of one
+of his problems, and she is now the head of a private school at
+Walsall, where I believe that she has met with considerable success.
+
+
+
+
+
+
+
+
+
+End of the Project Gutenberg EBook of The Adventures of Sherlock Holmes, by 
+Arthur Conan Doyle
+
+*** END OF THIS PROJECT GUTENBERG EBOOK THE ADVENTURES OF SHERLOCK HOLMES ***
+
+***** This file should be named 1661-8.txt or 1661-8.zip *****
+This and all associated files of various formats will be found in:
+        http://www.gutenberg.org/1/6/6/1661/
+
+Produced by an anonymous Project Gutenberg volunteer and Jose Menendez
+
+Updated editions will replace the previous one--the old editions
+will be renamed.
+
+Creating the works from public domain print editions means that no
+one owns a United States copyright in these works, so the Foundation
+(and you!) can copy and distribute it in the United States without
+permission and without paying copyright royalties.  Special rules,
+set forth in the General Terms of Use part of this license, apply to
+copying and distributing Project Gutenberg-tm electronic works to
+protect the PROJECT GUTENBERG-tm concept and trademark.  Project
+Gutenberg is a registered trademark, and may not be used if you
+charge for the eBooks, unless you receive specific permission.  If you
+do not charge anything for copies of this eBook, complying with the
+rules is very easy.  You may use this eBook for nearly any purpose
+such as creation of derivative works, reports, performances and
+research.  They may be modified and printed and given away--you may do
+practically ANYTHING with public domain eBooks.  Redistribution is
+subject to the trademark license, especially commercial
+redistribution.
+
+
+
+*** START: FULL LICENSE ***
+
+THE FULL PROJECT GUTENBERG LICENSE
+PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
+
+To protect the Project Gutenberg-tm mission of promoting the free
+distribution of electronic works, by using or distributing this work
+(or any other work associated in any way with the phrase "Project
+Gutenberg"), you agree to comply with all the terms of the Full Project
+Gutenberg-tm License (available with this file or online at
+http://gutenberg.net/license).
+
+
+Section 1.  General Terms of Use and Redistributing Project Gutenberg-tm
+electronic works
+
+1.A.  By reading or using any part of this Project Gutenberg-tm
+electronic work, you indicate that you have read, understand, agree to
+and accept all the terms of this license and intellectual property
+(trademark/copyright) agreement.  If you do not agree to abide by all
+the terms of this agreement, you must cease using and return or destroy
+all copies of Project Gutenberg-tm electronic works in your possession.
+If you paid a fee for obtaining a copy of or access to a Project
+Gutenberg-tm electronic work and you do not agree to be bound by the
+terms of this agreement, you may obtain a refund from the person or
+entity to whom you paid the fee as set forth in paragraph 1.E.8.
+
+1.B.  "Project Gutenberg" is a registered trademark.  It may only be
+used on or associated in any way with an electronic work by people who
+agree to be bound by the terms of this agreement.  There are a few
+things that you can do with most Project Gutenberg-tm electronic works
+even without complying with the full terms of this agreement.  See
+paragraph 1.C below.  There are a lot of things you can do with Project
+Gutenberg-tm electronic works if you follow the terms of this agreement
+and help preserve free future access to Project Gutenberg-tm electronic
+works.  See paragraph 1.E below.
+
+1.C.  The Project Gutenberg Literary Archive Foundation ("the Foundation"
+or PGLAF), owns a compilation copyright in the collection of Project
+Gutenberg-tm electronic works.  Nearly all the individual works in the
+collection are in the public domain in the United States.  If an
+individual work is in the public domain in the United States and you are
+located in the United States, we do not claim a right to prevent you from
+copying, distributing, performing, displaying or creating derivative
+works based on the work as long as all references to Project Gutenberg
+are removed.  Of course, we hope that you will support the Project
+Gutenberg-tm mission of promoting free access to electronic works by
+freely sharing Project Gutenberg-tm works in compliance with the terms of
+this agreement for keeping the Project Gutenberg-tm name associated with
+the work.  You can easily comply with the terms of this agreement by
+keeping this work in the same format with its attached full Project
+Gutenberg-tm License when you share it without charge with others.
+
+1.D.  The copyright laws of the place where you are located also govern
+what you can do with this work.  Copyright laws in most countries are in
+a constant state of change.  If you are outside the United States, check
+the laws of your country in addition to the terms of this agreement
+before downloading, copying, displaying, performing, distributing or
+creating derivative works based on this work or any other Project
+Gutenberg-tm work.  The Foundation makes no representations concerning
+the copyright status of any work in any country outside the United
+States.
+
+1.E.  Unless you have removed all references to Project Gutenberg:
+
+1.E.1.  The following sentence, with active links to, or other immediate
+access to, the full Project Gutenberg-tm License must appear prominently
+whenever any copy of a Project Gutenberg-tm work (any work on which the
+phrase "Project Gutenberg" appears, or with which the phrase "Project
+Gutenberg" is associated) is accessed, displayed, performed, viewed,
+copied or distributed:
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever.  You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.net
+
+1.E.2.  If an individual Project Gutenberg-tm electronic work is derived
+from the public domain (does not contain a notice indicating that it is
+posted with permission of the copyright holder), the work can be copied
+and distributed to anyone in the United States without paying any fees
+or charges.  If you are redistributing or providing access to a work
+with the phrase "Project Gutenberg" associated with or appearing on the
+work, you must comply either with the requirements of paragraphs 1.E.1
+through 1.E.7 or obtain permission for the use of the work and the
+Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
+1.E.9.
+
+1.E.3.  If an individual Project Gutenberg-tm electronic work is posted
+with the permission of the copyright holder, your use and distribution
+must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
+terms imposed by the copyright holder.  Additional terms will be linked
+to the Project Gutenberg-tm License for all works posted with the
+permission of the copyright holder found at the beginning of this work.
+
+1.E.4.  Do not unlink or detach or remove the full Project Gutenberg-tm
+License terms from this work, or any files containing a part of this
+work or any other work associated with Project Gutenberg-tm.
+
+1.E.5.  Do not copy, display, perform, distribute or redistribute this
+electronic work, or any part of this electronic work, without
+prominently displaying the sentence set forth in paragraph 1.E.1 with
+active links or immediate access to the full terms of the Project
+Gutenberg-tm License.
+
+1.E.6.  You may convert to and distribute this work in any binary,
+compressed, marked up, nonproprietary or proprietary form, including any
+word processing or hypertext form.  However, if you provide access to or
+distribute copies of a Project Gutenberg-tm work in a format other than
+"Plain Vanilla ASCII" or other format used in the official version
+posted on the official Project Gutenberg-tm web site (www.gutenberg.net),
+you must, at no additional cost, fee or expense to the user, provide a
+copy, a means of exporting a copy, or a means of obtaining a copy upon
+request, of the work in its original "Plain Vanilla ASCII" or other
+form.  Any alternate format must include the full Project Gutenberg-tm
+License as specified in paragraph 1.E.1.
+
+1.E.7.  Do not charge a fee for access to, viewing, displaying,
+performing, copying or distributing any Project Gutenberg-tm works
+unless you comply with paragraph 1.E.8 or 1.E.9.
+
+1.E.8.  You may charge a reasonable fee for copies of or providing
+access to or distributing Project Gutenberg-tm electronic works provided
+that
+
+- You pay a royalty fee of 20% of the gross profits you derive from
+     the use of Project Gutenberg-tm works calculated using the method
+     you already use to calculate your applicable taxes.  The fee is
+     owed to the owner of the Project Gutenberg-tm trademark, but he
+     has agreed to donate royalties under this paragraph to the
+     Project Gutenberg Literary Archive Foundation.  Royalty payments
+     must be paid within 60 days following each date on which you
+     prepare (or are legally required to prepare) your periodic tax
+     returns.  Royalty payments should be clearly marked as such and
+     sent to the Project Gutenberg Literary Archive Foundation at the
+     address specified in Section 4, "Information about donations to
+     the Project Gutenberg Literary Archive Foundation."
+
+- You provide a full refund of any money paid by a user who notifies
+     you in writing (or by e-mail) within 30 days of receipt that s/he
+     does not agree to the terms of the full Project Gutenberg-tm
+     License.  You must require such a user to return or
+     destroy all copies of the works possessed in a physical medium
+     and discontinue all use of and all access to other copies of
+     Project Gutenberg-tm works.
+
+- You provide, in accordance with paragraph 1.F.3, a full refund of any
+     money paid for a work or a replacement copy, if a defect in the
+     electronic work is discovered and reported to you within 90 days
+     of receipt of the work.
+
+- You comply with all other terms of this agreement for free
+     distribution of Project Gutenberg-tm works.
+
+1.E.9.  If you wish to charge a fee or distribute a Project Gutenberg-tm
+electronic work or group of works on different terms than are set
+forth in this agreement, you must obtain permission in writing from
+both the Project Gutenberg Literary Archive Foundation and Michael
+Hart, the owner of the Project Gutenberg-tm trademark.  Contact the
+Foundation as set forth in Section 3 below.
+
+1.F.
+
+1.F.1.  Project Gutenberg volunteers and employees expend considerable
+effort to identify, do copyright research on, transcribe and proofread
+public domain works in creating the Project Gutenberg-tm
+collection.  Despite these efforts, Project Gutenberg-tm electronic
+works, and the medium on which they may be stored, may contain
+"Defects," such as, but not limited to, incomplete, inaccurate or
+corrupt data, transcription errors, a copyright or other intellectual
+property infringement, a defective or damaged disk or other medium, a
+computer virus, or computer codes that damage or cannot be read by
+your equipment.
+
+1.F.2.  LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
+of Replacement or Refund" described in paragraph 1.F.3, the Project
+Gutenberg Literary Archive Foundation, the owner of the Project
+Gutenberg-tm trademark, and any other party distributing a Project
+Gutenberg-tm electronic work under this agreement, disclaim all
+liability to you for damages, costs and expenses, including legal
+fees.  YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
+LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
+PROVIDED IN PARAGRAPH 1.F.3.  YOU AGREE THAT THE FOUNDATION, THE
+TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
+LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
+INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+1.F.3.  LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
+defect in this electronic work within 90 days of receiving it, you can
+receive a refund of the money (if any) you paid for it by sending a
+written explanation to the person you received the work from.  If you
+received the work on a physical medium, you must return the medium with
+your written explanation.  The person or entity that provided you with
+the defective work may elect to provide a replacement copy in lieu of a
+refund.  If you received the work electronically, the person or entity
+providing it to you may choose to give you a second opportunity to
+receive the work electronically in lieu of a refund.  If the second copy
+is also defective, you may demand a refund in writing without further
+opportunities to fix the problem.
+
+1.F.4.  Except for the limited right of replacement or refund set forth
+in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
+WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
+
+1.F.5.  Some states do not allow disclaimers of certain implied
+warranties or the exclusion or limitation of certain types of damages.
+If any disclaimer or limitation set forth in this agreement violates the
+law of the state applicable to this agreement, the agreement shall be
+interpreted to make the maximum disclaimer or limitation permitted by
+the applicable state law.  The invalidity or unenforceability of any
+provision of this agreement shall not void the remaining provisions.
+
+1.F.6.  INDEMNITY - You agree to indemnify and hold the Foundation, the
+trademark owner, any agent or employee of the Foundation, anyone
+providing copies of Project Gutenberg-tm electronic works in accordance
+with this agreement, and any volunteers associated with the production,
+promotion and distribution of Project Gutenberg-tm electronic works,
+harmless from all liability, costs and expenses, including legal fees,
+that arise directly or indirectly from any of the following which you do
+or cause to occur: (a) distribution of this or any Project Gutenberg-tm
+work, (b) alteration, modification, or additions or deletions to any
+Project Gutenberg-tm work, and (c) any Defect you cause.
+
+
+Section  2.  Information about the Mission of Project Gutenberg-tm
+
+Project Gutenberg-tm is synonymous with the free distribution of
+electronic works in formats readable by the widest variety of computers
+including obsolete, old, middle-aged and new computers.  It exists
+because of the efforts of hundreds of volunteers and donations from
+people in all walks of life.
+
+Volunteers and financial support to provide volunteers with the
+assistance they need are critical to reaching Project Gutenberg-tm's
+goals and ensuring that the Project Gutenberg-tm collection will
+remain freely available for generations to come.  In 2001, the Project
+Gutenberg Literary Archive Foundation was created to provide a secure
+and permanent future for Project Gutenberg-tm and future generations.
+To learn more about the Project Gutenberg Literary Archive Foundation
+and how your efforts and donations can help, see Sections 3 and 4
+and the Foundation web page at http://www.pglaf.org.
+
+
+Section 3.  Information about the Project Gutenberg Literary Archive
+Foundation
+
+The Project Gutenberg Literary Archive Foundation is a non profit
+501(c)(3) educational corporation organized under the laws of the
+state of Mississippi and granted tax exempt status by the Internal
+Revenue Service.  The Foundation's EIN or federal tax identification
+number is 64-6221541.  Its 501(c)(3) letter is posted at
+http://pglaf.org/fundraising.  Contributions to the Project Gutenberg
+Literary Archive Foundation are tax deductible to the full extent
+permitted by U.S. federal laws and your state's laws.
+
+The Foundation's principal office is located at 4557 Melan Dr. S.
+Fairbanks, AK, 99712., but its volunteers and employees are scattered
+throughout numerous locations.  Its business office is located at
+809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
+business@pglaf.org.  Email contact links and up to date contact
+information can be found at the Foundation's web site and official
+page at http://pglaf.org
+
+For additional contact information:
+     Dr. Gregory B. Newby
+     Chief Executive and Director
+     gbnewby@pglaf.org
+
+
+Section 4.  Information about Donations to the Project Gutenberg
+Literary Archive Foundation
+
+Project Gutenberg-tm depends upon and cannot survive without wide
+spread public support and donations to carry out its mission of
+increasing the number of public domain and licensed works that can be
+freely distributed in machine readable form accessible by the widest
+array of equipment including outdated equipment.  Many small donations
+($1 to $5,000) are particularly important to maintaining tax exempt
+status with the IRS.
+
+The Foundation is committed to complying with the laws regulating
+charities and charitable donations in all 50 states of the United
+States.  Compliance requirements are not uniform and it takes a
+considerable effort, much paperwork and many fees to meet and keep up
+with these requirements.  We do not solicit donations in locations
+where we have not received written confirmation of compliance.  To
+SEND DONATIONS or determine the status of compliance for any
+particular state visit http://pglaf.org
+
+While we cannot and do not solicit contributions from states where we
+have not met the solicitation requirements, we know of no prohibition
+against accepting unsolicited donations from donors in such states who
+approach us with offers to donate.
+
+International donations are gratefully accepted, but we cannot make
+any statements concerning tax treatment of donations received from
+outside the United States.  U.S. laws alone swamp our small staff.
+
+Please check the Project Gutenberg Web pages for current donation
+methods and addresses.  Donations are accepted in a number of other
+ways including including checks, online payments and credit card
+donations.  To donate, please visit: http://pglaf.org/donate
+
+
+Section 5.  General Information About Project Gutenberg-tm electronic
+works.
+
+Professor Michael S. Hart is the originator of the Project Gutenberg-tm
+concept of a library of electronic works that could be freely shared
+with anyone.  For thirty years, he produced and distributed Project
+Gutenberg-tm eBooks with only a loose network of volunteer support.
+
+
+Project Gutenberg-tm eBooks are often created from several printed
+editions, all of which are confirmed as Public Domain in the U.S.
+unless a copyright notice is included.  Thus, we do not necessarily
+keep eBooks in compliance with any particular paper edition.
+
+
+Most people start at our Web site which has the main PG search facility:
+
+     http://www.gutenberg.net
+
+This Web site includes information about Project Gutenberg-tm,
+including how to make donations to the Project Gutenberg Literary
+Archive Foundation, how to help produce our new eBooks, and how to
+subscribe to our email newsletter to hear about new eBooks.
diff --git a/hyracks-examples/text-example/textapp/data/file2.txt b/hyracks-examples/text-example/textapp/data/file2.txt
new file mode 100644
index 0000000..a25d303
--- /dev/null
+++ b/hyracks-examples/text-example/textapp/data/file2.txt
@@ -0,0 +1,10216 @@
+Project Gutenberg's Memoirs of Sherlock Holmes, by Sir Arthur Conan Doyle
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever.  You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.org
+
+
+Title: Memoirs of Sherlock Holmes
+
+Author: Sir Arthur Conan Doyle
+
+Posting Date: July 31, 2008 [EBook #834]
+Release Date: March, 1997
+[This file last updated on August 16, 2010]
+
+Language: English
+
+
+*** START OF THIS PROJECT GUTENBERG EBOOK MEMOIRS OF SHERLOCK HOLMES ***
+
+
+
+
+Produced by Angela M. Cable
+
+
+
+
+
+MEMOIRS OF SHERLOCK HOLMES
+
+by Sir Arthur Conan Doyle
+
+
+
+
+Adventure I. Silver Blaze
+
+
+"I am afraid, Watson, that I shall have to go," said Holmes, as we sat
+down together to our breakfast one morning.
+
+"Go! Where to?"
+
+"To Dartmoor; to King's Pyland."
+
+I was not surprised. Indeed, my only wonder was that he had not already
+been mixed up in this extraordinary case, which was the one topic of
+conversation through the length and breadth of England. For a whole day
+my companion had rambled about the room with his chin upon his chest and
+his brows knitted, charging and recharging his pipe with the strongest
+black tobacco, and absolutely deaf to any of my questions or remarks.
+Fresh editions of every paper had been sent up by our news agent, only
+to be glanced over and tossed down into a corner. Yet, silent as he was,
+I knew perfectly well what it was over which he was brooding. There was
+but one problem before the public which could challenge his powers of
+analysis, and that was the singular disappearance of the favorite for
+the Wessex Cup, and the tragic murder of its trainer. When, therefore,
+he suddenly announced his intention of setting out for the scene of the
+drama it was only what I had both expected and hoped for.
+
+"I should be most happy to go down with you if I should not be in the
+way," said I.
+
+"My dear Watson, you would confer a great favor upon me by coming. And
+I think that your time will not be misspent, for there are points about
+the case which promise to make it an absolutely unique one. We have, I
+think, just time to catch our train at Paddington, and I will go further
+into the matter upon our journey. You would oblige me by bringing with
+you your very excellent field-glass."
+
+And so it happened that an hour or so later I found myself in the
+corner of a first-class carriage flying along en route for Exeter, while
+Sherlock Holmes, with his sharp, eager face framed in his ear-flapped
+travelling-cap, dipped rapidly into the bundle of fresh papers which he
+had procured at Paddington. We had left Reading far behind us before
+he thrust the last one of them under the seat, and offered me his
+cigar-case.
+
+"We are going well," said he, looking out the window and glancing at his
+watch. "Our rate at present is fifty-three and a half miles an hour."
+
+"I have not observed the quarter-mile posts," said I.
+
+"Nor have I. But the telegraph posts upon this line are sixty yards
+apart, and the calculation is a simple one. I presume that you
+have looked into this matter of the murder of John Straker and the
+disappearance of Silver Blaze?"
+
+"I have seen what the Telegraph and the Chronicle have to say."
+
+"It is one of those cases where the art of the reasoner should be
+used rather for the sifting of details than for the acquiring of fresh
+evidence. The tragedy has been so uncommon, so complete and of such
+personal importance to so many people, that we are suffering from a
+plethora of surmise, conjecture, and hypothesis. The difficulty is to
+detach the framework of fact--of absolute undeniable fact--from the
+embellishments of theorists and reporters. Then, having established
+ourselves upon this sound basis, it is our duty to see what inferences
+may be drawn and what are the special points upon which the whole
+mystery turns. On Tuesday evening I received telegrams from both Colonel
+Ross, the owner of the horse, and from Inspector Gregory, who is looking
+after the case, inviting my cooperation."
+
+"Tuesday evening!" I exclaimed. "And this is Thursday morning. Why
+didn't you go down yesterday?"
+
+"Because I made a blunder, my dear Watson--which is, I am afraid, a more
+common occurrence than any one would think who only knew me through your
+memoirs. The fact is that I could not believe it possible that the most
+remarkable horse in England could long remain concealed, especially in
+so sparsely inhabited a place as the north of Dartmoor. From hour to
+hour yesterday I expected to hear that he had been found, and that
+his abductor was the murderer of John Straker. When, however, another
+morning had come, and I found that beyond the arrest of young Fitzroy
+Simpson nothing had been done, I felt that it was time for me to take
+action. Yet in some ways I feel that yesterday has not been wasted."
+
+"You have formed a theory, then?"
+
+"At least I have got a grip of the essential facts of the case. I shall
+enumerate them to you, for nothing clears up a case so much as stating
+it to another person, and I can hardly expect your co-operation if I do
+not show you the position from which we start."
+
+I lay back against the cushions, puffing at my cigar, while Holmes,
+leaning forward, with his long, thin forefinger checking off the points
+upon the palm of his left hand, gave me a sketch of the events which had
+led to our journey.
+
+"Silver Blaze," said he, "is from the Somomy stock, and holds as
+brilliant a record as his famous ancestor. He is now in his fifth year,
+and has brought in turn each of the prizes of the turf to Colonel Ross,
+his fortunate owner. Up to the time of the catastrophe he was the first
+favorite for the Wessex Cup, the betting being three to one on him. He
+has always, however, been a prime favorite with the racing public, and
+has never yet disappointed them, so that even at those odds enormous
+sums of money have been laid upon him. It is obvious, therefore, that
+there were many people who had the strongest interest in preventing
+Silver Blaze from being there at the fall of the flag next Tuesday.
+
+"The fact was, of course, appreciated at King's Pyland, where the
+Colonel's training-stable is situated. Every precaution was taken to
+guard the favorite. The trainer, John Straker, is a retired jockey
+who rode in Colonel Ross's colors before he became too heavy for the
+weighing-chair. He has served the Colonel for five years as jockey and
+for seven as trainer, and has always shown himself to be a zealous and
+honest servant. Under him were three lads; for the establishment was a
+small one, containing only four horses in all. One of these lads sat up
+each night in the stable, while the others slept in the loft. All three
+bore excellent characters. John Straker, who is a married man, lived
+in a small villa about two hundred yards from the stables. He has no
+children, keeps one maid-servant, and is comfortably off. The country
+round is very lonely, but about half a mile to the north there is a
+small cluster of villas which have been built by a Tavistock contractor
+for the use of invalids and others who may wish to enjoy the pure
+Dartmoor air. Tavistock itself lies two miles to the west, while
+across the moor, also about two miles distant, is the larger training
+establishment of Mapleton, which belongs to Lord Backwater, and is
+managed by Silas Brown. In every other direction the moor is a complete
+wilderness, inhabited only by a few roaming gypsies. Such was the
+general situation last Monday night when the catastrophe occurred.
+
+"On that evening the horses had been exercised and watered as usual, and
+the stables were locked up at nine o'clock. Two of the lads walked up
+to the trainer's house, where they had supper in the kitchen, while the
+third, Ned Hunter, remained on guard. At a few minutes after nine
+the maid, Edith Baxter, carried down to the stables his supper, which
+consisted of a dish of curried mutton. She took no liquid, as there was
+a water-tap in the stables, and it was the rule that the lad on duty
+should drink nothing else. The maid carried a lantern with her, as it
+was very dark and the path ran across the open moor.
+
+"Edith Baxter was within thirty yards of the stables, when a man
+appeared out of the darkness and called to her to stop. As he stepped
+into the circle of yellow light thrown by the lantern she saw that he
+was a person of gentlemanly bearing, dressed in a gray suit of tweeds,
+with a cloth cap. He wore gaiters, and carried a heavy stick with a knob
+to it. She was most impressed, however, by the extreme pallor of his
+face and by the nervousness of his manner. His age, she thought, would
+be rather over thirty than under it.
+
+"'Can you tell me where I am?' he asked. 'I had almost made up my mind
+to sleep on the moor, when I saw the light of your lantern.'
+
+"'You are close to the King's Pyland training-stables,' said she.
+
+"'Oh, indeed! What a stroke of luck!' he cried. 'I understand that a
+stable-boy sleeps there alone every night. Perhaps that is his supper
+which you are carrying to him. Now I am sure that you would not be too
+proud to earn the price of a new dress, would you?' He took a piece of
+white paper folded up out of his waistcoat pocket. 'See that the boy
+has this to-night, and you shall have the prettiest frock that money can
+buy.'
+
+"She was frightened by the earnestness of his manner, and ran past him
+to the window through which she was accustomed to hand the meals. It was
+already opened, and Hunter was seated at the small table inside. She had
+begun to tell him of what had happened, when the stranger came up again.
+
+"'Good-evening,' said he, looking through the window. 'I wanted to have
+a word with you.' The girl has sworn that as he spoke she noticed the
+corner of the little paper packet protruding from his closed hand.
+
+"'What business have you here?' asked the lad.
+
+"'It's business that may put something into your pocket,' said the
+other. 'You've two horses in for the Wessex Cup--Silver Blaze and
+Bayard. Let me have the straight tip and you won't be a loser. Is it a
+fact that at the weights Bayard could give the other a hundred yards in
+five furlongs, and that the stable have put their money on him?'
+
+"'So, you're one of those damned touts!' cried the lad. 'I'll show you
+how we serve them in King's Pyland.' He sprang up and rushed across the
+stable to unloose the dog. The girl fled away to the house, but as she
+ran she looked back and saw that the stranger was leaning through the
+window. A minute later, however, when Hunter rushed out with the hound
+he was gone, and though he ran all round the buildings he failed to find
+any trace of him."
+
+"One moment," I asked. "Did the stable-boy, when he ran out with the
+dog, leave the door unlocked behind him?"
+
+"Excellent, Watson, excellent!" murmured my companion. "The importance
+of the point struck me so forcibly that I sent a special wire to
+Dartmoor yesterday to clear the matter up. The boy locked the door
+before he left it. The window, I may add, was not large enough for a man
+to get through.
+
+"Hunter waited until his fellow-grooms had returned, when he sent a
+message to the trainer and told him what had occurred. Straker was
+excited at hearing the account, although he does not seem to have quite
+realized its true significance. It left him, however, vaguely uneasy,
+and Mrs. Straker, waking at one in the morning, found that he was
+dressing. In reply to her inquiries, he said that he could not sleep on
+account of his anxiety about the horses, and that he intended to walk
+down to the stables to see that all was well. She begged him to remain
+at home, as she could hear the rain pattering against the window, but in
+spite of her entreaties he pulled on his large mackintosh and left the
+house.
+
+"Mrs. Straker awoke at seven in the morning, to find that her husband
+had not yet returned. She dressed herself hastily, called the maid, and
+set off for the stables. The door was open; inside, huddled together
+upon a chair, Hunter was sunk in a state of absolute stupor, the
+favorite's stall was empty, and there were no signs of his trainer.
+
+"The two lads who slept in the chaff-cutting loft above the harness-room
+were quickly aroused. They had heard nothing during the night, for they
+are both sound sleepers. Hunter was obviously under the influence of
+some powerful drug, and as no sense could be got out of him, he was left
+to sleep it off while the two lads and the two women ran out in search
+of the absentees. They still had hopes that the trainer had for some
+reason taken out the horse for early exercise, but on ascending the
+knoll near the house, from which all the neighboring moors were visible,
+they not only could see no signs of the missing favorite, but they
+perceived something which warned them that they were in the presence of
+a tragedy.
+
+"About a quarter of a mile from the stables John Straker's overcoat was
+flapping from a furze-bush. Immediately beyond there was a bowl-shaped
+depression in the moor, and at the bottom of this was found the dead
+body of the unfortunate trainer. His head had been shattered by a savage
+blow from some heavy weapon, and he was wounded on the thigh, where
+there was a long, clean cut, inflicted evidently by some very sharp
+instrument. It was clear, however, that Straker had defended himself
+vigorously against his assailants, for in his right hand he held a small
+knife, which was clotted with blood up to the handle, while in his left
+he clasped a red and black silk cravat, which was recognized by the maid
+as having been worn on the preceding evening by the stranger who had
+visited the stables. Hunter, on recovering from his stupor, was also
+quite positive as to the ownership of the cravat. He was equally certain
+that the same stranger had, while standing at the window, drugged his
+curried mutton, and so deprived the stables of their watchman. As to the
+missing horse, there were abundant proofs in the mud which lay at the
+bottom of the fatal hollow that he had been there at the time of the
+struggle. But from that morning he has disappeared, and although a large
+reward has been offered, and all the gypsies of Dartmoor are on the
+alert, no news has come of him. Finally, an analysis has shown that
+the remains of his supper left by the stable-lad contain an appreciable
+quantity of powdered opium, while the people at the house partook of the
+same dish on the same night without any ill effect.
+
+"Those are the main facts of the case, stripped of all surmise, and
+stated as baldly as possible. I shall now recapitulate what the police
+have done in the matter.
+
+"Inspector Gregory, to whom the case has been committed, is an extremely
+competent officer. Were he but gifted with imagination he might rise to
+great heights in his profession. On his arrival he promptly found and
+arrested the man upon whom suspicion naturally rested. There was little
+difficulty in finding him, for he inhabited one of those villas which I
+have mentioned. His name, it appears, was Fitzroy Simpson. He was a man
+of excellent birth and education, who had squandered a fortune upon the
+turf, and who lived now by doing a little quiet and genteel book-making
+in the sporting clubs of London. An examination of his betting-book
+shows that bets to the amount of five thousand pounds had been
+registered by him against the favorite. On being arrested he volunteered
+that statement that he had come down to Dartmoor in the hope of
+getting some information about the King's Pyland horses, and also about
+Desborough, the second favorite, which was in charge of Silas Brown at
+the Mapleton stables. He did not attempt to deny that he had acted as
+described upon the evening before, but declared that he had no sinister
+designs, and had simply wished to obtain first-hand information. When
+confronted with his cravat, he turned very pale, and was utterly unable
+to account for its presence in the hand of the murdered man. His wet
+clothing showed that he had been out in the storm of the night before,
+and his stick, which was a Penang-lawyer weighted with lead, was just
+such a weapon as might, by repeated blows, have inflicted the terrible
+injuries to which the trainer had succumbed. On the other hand, there
+was no wound upon his person, while the state of Straker's knife would
+show that one at least of his assailants must bear his mark upon him.
+There you have it all in a nutshell, Watson, and if you can give me any
+light I shall be infinitely obliged to you."
+
+I had listened with the greatest interest to the statement which Holmes,
+with characteristic clearness, had laid before me. Though most of the
+facts were familiar to me, I had not sufficiently appreciated their
+relative importance, nor their connection to each other.
+
+"Is it not possible," I suggested, "that the incised wound upon Straker
+may have been caused by his own knife in the convulsive struggles which
+follow any brain injury?"
+
+"It is more than possible; it is probable," said Holmes. "In that case
+one of the main points in favor of the accused disappears."
+
+"And yet," said I, "even now I fail to understand what the theory of the
+police can be."
+
+"I am afraid that whatever theory we state has very grave objections to
+it," returned my companion. "The police imagine, I take it, that this
+Fitzroy Simpson, having drugged the lad, and having in some way obtained
+a duplicate key, opened the stable door and took out the horse, with
+the intention, apparently, of kidnapping him altogether. His bridle is
+missing, so that Simpson must have put this on. Then, having left the
+door open behind him, he was leading the horse away over the moor, when
+he was either met or overtaken by the trainer. A row naturally ensued.
+Simpson beat out the trainer's brains with his heavy stick without
+receiving any injury from the small knife which Straker used in
+self-defence, and then the thief either led the horse on to some secret
+hiding-place, or else it may have bolted during the struggle, and be
+now wandering out on the moors. That is the case as it appears to
+the police, and improbable as it is, all other explanations are more
+improbable still. However, I shall very quickly test the matter when I
+am once upon the spot, and until then I cannot really see how we can get
+much further than our present position."
+
+It was evening before we reached the little town of Tavistock, which
+lies, like the boss of a shield, in the middle of the huge circle of
+Dartmoor. Two gentlemen were awaiting us in the station--the one a tall,
+fair man with lion-like hair and beard and curiously penetrating light
+blue eyes; the other a small, alert person, very neat and dapper, in a
+frock-coat and gaiters, with trim little side-whiskers and an eye-glass.
+The latter was Colonel Ross, the well-known sportsman; the other,
+Inspector Gregory, a man who was rapidly making his name in the English
+detective service.
+
+"I am delighted that you have come down, Mr. Holmes," said the Colonel.
+"The Inspector here has done all that could possibly be suggested, but I
+wish to leave no stone unturned in trying to avenge poor Straker and in
+recovering my horse."
+
+"Have there been any fresh developments?" asked Holmes.
+
+"I am sorry to say that we have made very little progress," said the
+Inspector. "We have an open carriage outside, and as you would no doubt
+like to see the place before the light fails, we might talk it over as
+we drive."
+
+A minute later we were all seated in a comfortable landau, and were
+rattling through the quaint old Devonshire city. Inspector Gregory was
+full of his case, and poured out a stream of remarks, while Holmes threw
+in an occasional question or interjection. Colonel Ross leaned back with
+his arms folded and his hat tilted over his eyes, while I listened with
+interest to the dialogue of the two detectives. Gregory was formulating
+his theory, which was almost exactly what Holmes had foretold in the
+train.
+
+"The net is drawn pretty close round Fitzroy Simpson," he remarked, "and
+I believe myself that he is our man. At the same time I recognize that
+the evidence is purely circumstantial, and that some new development may
+upset it."
+
+"How about Straker's knife?"
+
+"We have quite come to the conclusion that he wounded himself in his
+fall."
+
+"My friend Dr. Watson made that suggestion to me as we came down. If so,
+it would tell against this man Simpson."
+
+"Undoubtedly. He has neither a knife nor any sign of a wound. The
+evidence against him is certainly very strong. He had a great interest
+in the disappearance of the favorite. He lies under suspicion of having
+poisoned the stable-boy, he was undoubtedly out in the storm, he was
+armed with a heavy stick, and his cravat was found in the dead man's
+hand. I really think we have enough to go before a jury."
+
+Holmes shook his head. "A clever counsel would tear it all to rags,"
+said he. "Why should he take the horse out of the stable? If he wished
+to injure it why could he not do it there? Has a duplicate key been
+found in his possession? What chemist sold him the powdered opium? Above
+all, where could he, a stranger to the district, hide a horse, and such
+a horse as this? What is his own explanation as to the paper which he
+wished the maid to give to the stable-boy?"
+
+"He says that it was a ten-pound note. One was found in his purse. But
+your other difficulties are not so formidable as they seem. He is not
+a stranger to the district. He has twice lodged at Tavistock in the
+summer. The opium was probably brought from London. The key, having
+served its purpose, would be hurled away. The horse may be at the bottom
+of one of the pits or old mines upon the moor."
+
+"What does he say about the cravat?"
+
+"He acknowledges that it is his, and declares that he had lost it. But a
+new element has been introduced into the case which may account for his
+leading the horse from the stable."
+
+Holmes pricked up his ears.
+
+"We have found traces which show that a party of gypsies encamped on
+Monday night within a mile of the spot where the murder took place. On
+Tuesday they were gone. Now, presuming that there was some understanding
+between Simpson and these gypsies, might he not have been leading the
+horse to them when he was overtaken, and may they not have him now?"
+
+"It is certainly possible."
+
+"The moor is being scoured for these gypsies. I have also examined every
+stable and out-house in Tavistock, and for a radius of ten miles."
+
+"There is another training-stable quite close, I understand?"
+
+"Yes, and that is a factor which we must certainly not neglect. As
+Desborough, their horse, was second in the betting, they had an interest
+in the disappearance of the favorite. Silas Brown, the trainer, is known
+to have had large bets upon the event, and he was no friend to poor
+Straker. We have, however, examined the stables, and there is nothing to
+connect him with the affair."
+
+"And nothing to connect this man Simpson with the interests of the
+Mapleton stables?"
+
+"Nothing at all."
+
+Holmes leaned back in the carriage, and the conversation ceased. A few
+minutes later our driver pulled up at a neat little red-brick villa with
+overhanging eaves which stood by the road. Some distance off, across a
+paddock, lay a long gray-tiled out-building. In every other direction
+the low curves of the moor, bronze-colored from the fading ferns,
+stretched away to the sky-line, broken only by the steeples of
+Tavistock, and by a cluster of houses away to the westward which marked
+the Mapleton stables. We all sprang out with the exception of Holmes,
+who continued to lean back with his eyes fixed upon the sky in front of
+him, entirely absorbed in his own thoughts. It was only when I touched
+his arm that he roused himself with a violent start and stepped out of
+the carriage.
+
+"Excuse me," said he, turning to Colonel Ross, who had looked at him in
+some surprise. "I was day-dreaming." There was a gleam in his eyes and a
+suppressed excitement in his manner which convinced me, used as I was
+to his ways, that his hand was upon a clue, though I could not imagine
+where he had found it.
+
+"Perhaps you would prefer at once to go on to the scene of the crime,
+Mr. Holmes?" said Gregory.
+
+"I think that I should prefer to stay here a little and go into one or
+two questions of detail. Straker was brought back here, I presume?"
+
+"Yes; he lies upstairs. The inquest is to-morrow."
+
+"He has been in your service some years, Colonel Ross?"
+
+"I have always found him an excellent servant."
+
+"I presume that you made an inventory of what he had in his pockets at
+the time of his death, Inspector?"
+
+"I have the things themselves in the sitting-room, if you would care to
+see them."
+
+"I should be very glad." We all filed into the front room and sat round
+the central table while the Inspector unlocked a square tin box and laid
+a small heap of things before us. There was a box of vestas, two inches
+of tallow candle, an A D P brier-root pipe, a pouch of seal-skin with
+half an ounce of long-cut Cavendish, a silver watch with a gold chain,
+five sovereigns in gold, an aluminum pencil-case, a few papers, and an
+ivory-handled knife with a very delicate, inflexible blade marked Weiss
+& Co., London.
+
+"This is a very singular knife," said Holmes, lifting it up and
+examining it minutely. "I presume, as I see blood-stains upon it, that
+it is the one which was found in the dead man's grasp. Watson, this
+knife is surely in your line?"
+
+"It is what we call a cataract knife," said I.
+
+"I thought so. A very delicate blade devised for very delicate work.
+A strange thing for a man to carry with him upon a rough expedition,
+especially as it would not shut in his pocket."
+
+"The tip was guarded by a disk of cork which we found beside his body,"
+said the Inspector. "His wife tells us that the knife had lain upon the
+dressing-table, and that he had picked it up as he left the room. It was
+a poor weapon, but perhaps the best that he could lay his hands on at
+the moment."
+
+"Very possible. How about these papers?"
+
+"Three of them are receipted hay-dealers' accounts. One of them is a
+letter of instructions from Colonel Ross. This other is a milliner's
+account for thirty-seven pounds fifteen made out by Madame Lesurier,
+of Bond Street, to William Derbyshire. Mrs. Straker tells us that
+Derbyshire was a friend of her husband's and that occasionally his
+letters were addressed here."
+
+"Madam Derbyshire had somewhat expensive tastes," remarked Holmes,
+glancing down the account. "Twenty-two guineas is rather heavy for a
+single costume. However there appears to be nothing more to learn, and
+we may now go down to the scene of the crime."
+
+As we emerged from the sitting-room a woman, who had been waiting in
+the passage, took a step forward and laid her hand upon the Inspector's
+sleeve. Her face was haggard and thin and eager, stamped with the print
+of a recent horror.
+
+"Have you got them? Have you found them?" she panted.
+
+"No, Mrs. Straker. But Mr. Holmes here has come from London to help us,
+and we shall do all that is possible."
+
+"Surely I met you in Plymouth at a garden-party some little time ago,
+Mrs. Straker?" said Holmes.
+
+"No, sir; you are mistaken."
+
+"Dear me! Why, I could have sworn to it. You wore a costume of
+dove-colored silk with ostrich-feather trimming."
+
+"I never had such a dress, sir," answered the lady.
+
+"Ah, that quite settles it," said Holmes. And with an apology he
+followed the Inspector outside. A short walk across the moor took us to
+the hollow in which the body had been found. At the brink of it was the
+furze-bush upon which the coat had been hung.
+
+"There was no wind that night, I understand," said Holmes.
+
+"None; but very heavy rain."
+
+"In that case the overcoat was not blown against the furze-bush, but
+placed there."
+
+"Yes, it was laid across the bush."
+
+"You fill me with interest, I perceive that the ground has been trampled
+up a good deal. No doubt many feet have been here since Monday night."
+
+"A piece of matting has been laid here at the side, and we have all
+stood upon that."
+
+"Excellent."
+
+"In this bag I have one of the boots which Straker wore, one of Fitzroy
+Simpson's shoes, and a cast horseshoe of Silver Blaze."
+
+"My dear Inspector, you surpass yourself!" Holmes took the bag, and,
+descending into the hollow, he pushed the matting into a more central
+position. Then stretching himself upon his face and leaning his chin
+upon his hands, he made a careful study of the trampled mud in front of
+him. "Hullo!" said he, suddenly. "What's this?" It was a wax vesta half
+burned, which was so coated with mud that it looked at first like a
+little chip of wood.
+
+"I cannot think how I came to overlook it," said the Inspector, with an
+expression of annoyance.
+
+"It was invisible, buried in the mud. I only saw it because I was
+looking for it."
+
+"What! You expected to find it?"
+
+"I thought it not unlikely."
+
+He took the boots from the bag, and compared the impressions of each of
+them with marks upon the ground. Then he clambered up to the rim of the
+hollow, and crawled about among the ferns and bushes.
+
+"I am afraid that there are no more tracks," said the Inspector. "I
+have examined the ground very carefully for a hundred yards in each
+direction."
+
+"Indeed!" said Holmes, rising. "I should not have the impertinence to
+do it again after what you say. But I should like to take a little walk
+over the moor before it grows dark, that I may know my ground to-morrow,
+and I think that I shall put this horseshoe into my pocket for luck."
+
+Colonel Ross, who had shown some signs of impatience at my companion's
+quiet and systematic method of work, glanced at his watch. "I wish you
+would come back with me, Inspector," said he. "There are several points
+on which I should like your advice, and especially as to whether we do
+not owe it to the public to remove our horse's name from the entries for
+the Cup."
+
+"Certainly not," cried Holmes, with decision. "I should let the name
+stand."
+
+The Colonel bowed. "I am very glad to have had your opinion, sir," said
+he. "You will find us at poor Straker's house when you have finished
+your walk, and we can drive together into Tavistock."
+
+He turned back with the Inspector, while Holmes and I walked slowly
+across the moor. The sun was beginning to sink behind the stables of
+Mapleton, and the long, sloping plain in front of us was tinged with
+gold, deepening into rich, ruddy browns where the faded ferns and
+brambles caught the evening light. But the glories of the landscape were
+all wasted upon my companion, who was sunk in the deepest thought.
+
+"It's this way, Watson," said he at last. "We may leave the question
+of who killed John Straker for the instant, and confine ourselves to
+finding out what has become of the horse. Now, supposing that he broke
+away during or after the tragedy, where could he have gone to? The horse
+is a very gregarious creature. If left to himself his instincts would
+have been either to return to King's Pyland or go over to Mapleton. Why
+should he run wild upon the moor? He would surely have been seen by now.
+And why should gypsies kidnap him? These people always clear out when
+they hear of trouble, for they do not wish to be pestered by the police.
+They could not hope to sell such a horse. They would run a great risk
+and gain nothing by taking him. Surely that is clear."
+
+"Where is he, then?"
+
+"I have already said that he must have gone to King's Pyland or to
+Mapleton. He is not at King's Pyland. Therefore he is at Mapleton. Let
+us take that as a working hypothesis and see what it leads us to. This
+part of the moor, as the Inspector remarked, is very hard and dry. But
+it falls away towards Mapleton, and you can see from here that there
+is a long hollow over yonder, which must have been very wet on Monday
+night. If our supposition is correct, then the horse must have crossed
+that, and there is the point where we should look for his tracks."
+
+We had been walking briskly during this conversation, and a few more
+minutes brought us to the hollow in question. At Holmes' request I
+walked down the bank to the right, and he to the left, but I had not
+taken fifty paces before I heard him give a shout, and saw him waving
+his hand to me. The track of a horse was plainly outlined in the soft
+earth in front of him, and the shoe which he took from his pocket
+exactly fitted the impression.
+
+"See the value of imagination," said Holmes. "It is the one quality
+which Gregory lacks. We imagined what might have happened, acted upon
+the supposition, and find ourselves justified. Let us proceed."
+
+We crossed the marshy bottom and passed over a quarter of a mile of dry,
+hard turf. Again the ground sloped, and again we came on the tracks.
+Then we lost them for half a mile, but only to pick them up once more
+quite close to Mapleton. It was Holmes who saw them first, and he stood
+pointing with a look of triumph upon his face. A man's track was visible
+beside the horse's.
+
+"The horse was alone before," I cried.
+
+"Quite so. It was alone before. Hullo, what is this?"
+
+The double track turned sharp off and took the direction of King's
+Pyland. Holmes whistled, and we both followed along after it. His eyes
+were on the trail, but I happened to look a little to one side, and
+saw to my surprise the same tracks coming back again in the opposite
+direction.
+
+"One for you, Watson," said Holmes, when I pointed it out. "You have
+saved us a long walk, which would have brought us back on our own
+traces. Let us follow the return track."
+
+We had not to go far. It ended at the paving of asphalt which led up
+to the gates of the Mapleton stables. As we approached, a groom ran out
+from them.
+
+"We don't want any loiterers about here," said he.
+
+"I only wished to ask a question," said Holmes, with his finger and
+thumb in his waistcoat pocket. "Should I be too early to see your
+master, Mr. Silas Brown, if I were to call at five o'clock to-morrow
+morning?"
+
+"Bless you, sir, if any one is about he will be, for he is always
+the first stirring. But here he is, sir, to answer your questions for
+himself. No, sir, no; it is as much as my place is worth to let him see
+me touch your money. Afterwards, if you like."
+
+As Sherlock Holmes replaced the half-crown which he had drawn from his
+pocket, a fierce-looking elderly man strode out from the gate with a
+hunting-crop swinging in his hand.
+
+"What's this, Dawson!" he cried. "No gossiping! Go about your business!
+And you, what the devil do you want here?"
+
+"Ten minutes' talk with you, my good sir," said Holmes in the sweetest
+of voices.
+
+"I've no time to talk to every gadabout. We want no stranger here. Be
+off, or you may find a dog at your heels."
+
+Holmes leaned forward and whispered something in the trainer's ear. He
+started violently and flushed to the temples.
+
+"It's a lie!" he shouted, "an infernal lie!"
+
+"Very good. Shall we argue about it here in public or talk it over in
+your parlor?"
+
+"Oh, come in if you wish to."
+
+Holmes smiled. "I shall not keep you more than a few minutes, Watson,"
+said he. "Now, Mr. Brown, I am quite at your disposal."
+
+It was twenty minutes, and the reds had all faded into grays before
+Holmes and the trainer reappeared. Never have I seen such a change as
+had been brought about in Silas Brown in that short time. His face was
+ashy pale, beads of perspiration shone upon his brow, and his hands
+shook until the hunting-crop wagged like a branch in the wind. His
+bullying, overbearing manner was all gone too, and he cringed along at
+my companion's side like a dog with its master.
+
+"Your instructions will be done. It shall all be done," said he.
+
+"There must be no mistake," said Holmes, looking round at him. The other
+winced as he read the menace in his eyes.
+
+"Oh no, there shall be no mistake. It shall be there. Should I change it
+first or not?"
+
+Holmes thought a little and then burst out laughing. "No, don't," said
+he; "I shall write to you about it. No tricks, now, or--"
+
+"Oh, you can trust me, you can trust me!"
+
+"Yes, I think I can. Well, you shall hear from me to-morrow." He turned
+upon his heel, disregarding the trembling hand which the other held out
+to him, and we set off for King's Pyland.
+
+"A more perfect compound of the bully, coward, and sneak than Master
+Silas Brown I have seldom met with," remarked Holmes as we trudged along
+together.
+
+"He has the horse, then?"
+
+"He tried to bluster out of it, but I described to him so exactly what
+his actions had been upon that morning that he is convinced that I was
+watching him. Of course you observed the peculiarly square toes in the
+impressions, and that his own boots exactly corresponded to them.
+Again, of course no subordinate would have dared to do such a thing.
+I described to him how, when according to his custom he was the first
+down, he perceived a strange horse wandering over the moor. How he went
+out to it, and his astonishment at recognizing, from the white forehead
+which has given the favorite its name, that chance had put in his power
+the only horse which could beat the one upon which he had put his money.
+Then I described how his first impulse had been to lead him back to
+King's Pyland, and how the devil had shown him how he could hide the
+horse until the race was over, and how he had led it back and concealed
+it at Mapleton. When I told him every detail he gave it up and thought
+only of saving his own skin."
+
+"But his stables had been searched?"
+
+"Oh, an old horse-faker like him has many a dodge."
+
+"But are you not afraid to leave the horse in his power now, since he
+has every interest in injuring it?"
+
+"My dear fellow, he will guard it as the apple of his eye. He knows that
+his only hope of mercy is to produce it safe."
+
+"Colonel Ross did not impress me as a man who would be likely to show
+much mercy in any case."
+
+"The matter does not rest with Colonel Ross. I follow my own methods,
+and tell as much or as little as I choose. That is the advantage of
+being unofficial. I don't know whether you observed it, Watson, but the
+Colonel's manner has been just a trifle cavalier to me. I am inclined
+now to have a little amusement at his expense. Say nothing to him about
+the horse."
+
+"Certainly not without your permission."
+
+"And of course this is all quite a minor point compared to the question
+of who killed John Straker."
+
+"And you will devote yourself to that?"
+
+"On the contrary, we both go back to London by the night train."
+
+I was thunderstruck by my friend's words. We had only been a few hours
+in Devonshire, and that he should give up an investigation which he had
+begun so brilliantly was quite incomprehensible to me. Not a word more
+could I draw from him until we were back at the trainer's house. The
+Colonel and the Inspector were awaiting us in the parlor.
+
+"My friend and I return to town by the night-express," said Holmes. "We
+have had a charming little breath of your beautiful Dartmoor air."
+
+The Inspector opened his eyes, and the Colonel's lip curled in a sneer.
+
+"So you despair of arresting the murderer of poor Straker," said he.
+
+Holmes shrugged his shoulders. "There are certainly grave difficulties
+in the way," said he. "I have every hope, however, that your horse
+will start upon Tuesday, and I beg that you will have your jockey in
+readiness. Might I ask for a photograph of Mr. John Straker?"
+
+The Inspector took one from an envelope and handed it to him.
+
+"My dear Gregory, you anticipate all my wants. If I might ask you to
+wait here for an instant, I have a question which I should like to put
+to the maid."
+
+"I must say that I am rather disappointed in our London consultant,"
+said Colonel Ross, bluntly, as my friend left the room. "I do not see
+that we are any further than when he came."
+
+"At least you have his assurance that your horse will run," said I.
+
+"Yes, I have his assurance," said the Colonel, with a shrug of his
+shoulders. "I should prefer to have the horse."
+
+I was about to make some reply in defence of my friend when he entered
+the room again.
+
+"Now, gentlemen," said he, "I am quite ready for Tavistock."
+
+As we stepped into the carriage one of the stable-lads held the door
+open for us. A sudden idea seemed to occur to Holmes, for he leaned
+forward and touched the lad upon the sleeve.
+
+"You have a few sheep in the paddock," he said. "Who attends to them?"
+
+"I do, sir."
+
+"Have you noticed anything amiss with them of late?"
+
+"Well, sir, not of much account; but three of them have gone lame, sir."
+
+I could see that Holmes was extremely pleased, for he chuckled and
+rubbed his hands together.
+
+"A long shot, Watson; a very long shot," said he, pinching my arm.
+"Gregory, let me recommend to your attention this singular epidemic
+among the sheep. Drive on, coachman!"
+
+Colonel Ross still wore an expression which showed the poor opinion
+which he had formed of my companion's ability, but I saw by the
+Inspector's face that his attention had been keenly aroused.
+
+"You consider that to be important?" he asked.
+
+"Exceedingly so."
+
+"Is there any point to which you would wish to draw my attention?"
+
+"To the curious incident of the dog in the night-time."
+
+"The dog did nothing in the night-time."
+
+"That was the curious incident," remarked Sherlock Holmes.
+
+
+Four days later Holmes and I were again in the train, bound for
+Winchester to see the race for the Wessex Cup. Colonel Ross met us by
+appointment outside the station, and we drove in his drag to the course
+beyond the town. His face was grave, and his manner was cold in the
+extreme.
+
+"I have seen nothing of my horse," said he.
+
+"I suppose that you would know him when you saw him?" asked Holmes.
+
+The Colonel was very angry. "I have been on the turf for twenty years,
+and never was asked such a question as that before," said he. "A
+child would know Silver Blaze, with his white forehead and his mottled
+off-foreleg."
+
+"How is the betting?"
+
+"Well, that is the curious part of it. You could have got fifteen to one
+yesterday, but the price has become shorter and shorter, until you can
+hardly get three to one now."
+
+"Hum!" said Holmes. "Somebody knows something, that is clear."
+
+As the drag drew up in the enclosure near the grand stand I glanced at
+the card to see the entries.
+
+Wessex Plate [it ran] 50 sovs each h ft with 1000 sovs added for four
+and five year olds. Second, L300. Third, L200. New course (one mile and
+five furlongs). Mr. Heath Newton's The Negro. Red cap. Cinnamon jacket.
+Colonel Wardlaw's Pugilist. Pink cap. Blue and black jacket. Lord
+Backwater's Desborough. Yellow cap and sleeves. Colonel Ross's Silver
+Blaze. Black cap. Red jacket. Duke of Balmoral's Iris. Yellow and black
+stripes. Lord Singleford's Rasper. Purple cap. Black sleeves.
+
+"We scratched our other one, and put all hopes on your word," said the
+Colonel. "Why, what is that? Silver Blaze favorite?"
+
+"Five to four against Silver Blaze!" roared the ring. "Five to four
+against Silver Blaze! Five to fifteen against Desborough! Five to four
+on the field!"
+
+"There are the numbers up," I cried. "They are all six there."
+
+"All six there? Then my horse is running," cried the Colonel in great
+agitation. "But I don't see him. My colors have not passed."
+
+"Only five have passed. This must be he."
+
+As I spoke a powerful bay horse swept out from the weighing enclosure
+and cantered past us, bearing on its back the well-known black and red
+of the Colonel.
+
+"That's not my horse," cried the owner. "That beast has not a white hair
+upon its body. What is this that you have done, Mr. Holmes?"
+
+"Well, well, let us see how he gets on," said my friend, imperturbably.
+For a few minutes he gazed through my field-glass. "Capital! An
+excellent start!" he cried suddenly. "There they are, coming round the
+curve!"
+
+From our drag we had a superb view as they came up the straight. The six
+horses were so close together that a carpet could have covered them,
+but half way up the yellow of the Mapleton stable showed to the front.
+Before they reached us, however, Desborough's bolt was shot, and the
+Colonel's horse, coming away with a rush, passed the post a good six
+lengths before its rival, the Duke of Balmoral's Iris making a bad
+third.
+
+"It's my race, anyhow," gasped the Colonel, passing his hand over his
+eyes. "I confess that I can make neither head nor tail of it. Don't you
+think that you have kept up your mystery long enough, Mr. Holmes?"
+
+"Certainly, Colonel, you shall know everything. Let us all go round and
+have a look at the horse together. Here he is," he continued, as we made
+our way into the weighing enclosure, where only owners and their friends
+find admittance. "You have only to wash his face and his leg in spirits
+of wine, and you will find that he is the same old Silver Blaze as
+ever."
+
+"You take my breath away!"
+
+"I found him in the hands of a faker, and took the liberty of running
+him just as he was sent over."
+
+"My dear sir, you have done wonders. The horse looks very fit and well.
+It never went better in its life. I owe you a thousand apologies
+for having doubted your ability. You have done me a great service by
+recovering my horse. You would do me a greater still if you could lay
+your hands on the murderer of John Straker."
+
+"I have done so," said Holmes quietly.
+
+The Colonel and I stared at him in amazement. "You have got him! Where
+is he, then?"
+
+"He is here."
+
+"Here! Where?"
+
+"In my company at the present moment."
+
+The Colonel flushed angrily. "I quite recognize that I am under
+obligations to you, Mr. Holmes," said he, "but I must regard what you
+have just said as either a very bad joke or an insult."
+
+Sherlock Holmes laughed. "I assure you that I have not associated
+you with the crime, Colonel," said he. "The real murderer is standing
+immediately behind you." He stepped past and laid his hand upon the
+glossy neck of the thoroughbred.
+
+"The horse!" cried both the Colonel and myself.
+
+"Yes, the horse. And it may lessen his guilt if I say that it was
+done in self-defence, and that John Straker was a man who was entirely
+unworthy of your confidence. But there goes the bell, and as I stand
+to win a little on this next race, I shall defer a lengthy explanation
+until a more fitting time."
+
+
+
+We had the corner of a Pullman car to ourselves that evening as we
+whirled back to London, and I fancy that the journey was a short one
+to Colonel Ross as well as to myself, as we listened to our
+companion's narrative of the events which had occurred at the Dartmoor
+training-stables upon the Monday night, and the means by which he had
+unravelled them.
+
+"I confess," said he, "that any theories which I had formed from
+the newspaper reports were entirely erroneous. And yet there were
+indications there, had they not been overlaid by other details which
+concealed their true import. I went to Devonshire with the conviction
+that Fitzroy Simpson was the true culprit, although, of course, I saw
+that the evidence against him was by no means complete. It was while I
+was in the carriage, just as we reached the trainer's house, that the
+immense significance of the curried mutton occurred to me. You may
+remember that I was distrait, and remained sitting after you had all
+alighted. I was marvelling in my own mind how I could possibly have
+overlooked so obvious a clue."
+
+"I confess," said the Colonel, "that even now I cannot see how it helps
+us."
+
+"It was the first link in my chain of reasoning. Powdered opium is by no
+means tasteless. The flavor is not disagreeable, but it is perceptible.
+Were it mixed with any ordinary dish the eater would undoubtedly detect
+it, and would probably eat no more. A curry was exactly the medium
+which would disguise this taste. By no possible supposition could
+this stranger, Fitzroy Simpson, have caused curry to be served in
+the trainer's family that night, and it is surely too monstrous a
+coincidence to suppose that he happened to come along with powdered
+opium upon the very night when a dish happened to be served which would
+disguise the flavor. That is unthinkable. Therefore Simpson becomes
+eliminated from the case, and our attention centers upon Straker and
+his wife, the only two people who could have chosen curried mutton for
+supper that night. The opium was added after the dish was set aside
+for the stable-boy, for the others had the same for supper with no ill
+effects. Which of them, then, had access to that dish without the maid
+seeing them?
+
+"Before deciding that question I had grasped the significance of the
+silence of the dog, for one true inference invariably suggests others.
+The Simpson incident had shown me that a dog was kept in the stables,
+and yet, though some one had been in and had fetched out a horse, he
+had not barked enough to arouse the two lads in the loft. Obviously the
+midnight visitor was some one whom the dog knew well.
+
+"I was already convinced, or almost convinced, that John Straker went
+down to the stables in the dead of the night and took out Silver Blaze.
+For what purpose? For a dishonest one, obviously, or why should he drug
+his own stable-boy? And yet I was at a loss to know why. There have been
+cases before now where trainers have made sure of great sums of money
+by laying against their own horses, through agents, and then preventing
+them from winning by fraud. Sometimes it is a pulling jockey. Sometimes
+it is some surer and subtler means. What was it here? I hoped that the
+contents of his pockets might help me to form a conclusion.
+
+"And they did so. You cannot have forgotten the singular knife which was
+found in the dead man's hand, a knife which certainly no sane man would
+choose for a weapon. It was, as Dr. Watson told us, a form of knife
+which is used for the most delicate operations known in surgery. And it
+was to be used for a delicate operation that night. You must know, with
+your wide experience of turf matters, Colonel Ross, that it is possible
+to make a slight nick upon the tendons of a horse's ham, and to do it
+subcutaneously, so as to leave absolutely no trace. A horse so treated
+would develop a slight lameness, which would be put down to a strain in
+exercise or a touch of rheumatism, but never to foul play."
+
+"Villain! Scoundrel!" cried the Colonel.
+
+"We have here the explanation of why John Straker wished to take the
+horse out on to the moor. So spirited a creature would have certainly
+roused the soundest of sleepers when it felt the prick of the knife. It
+was absolutely necessary to do it in the open air."
+
+"I have been blind!" cried the Colonel. "Of course that was why he
+needed the candle, and struck the match."
+
+"Undoubtedly. But in examining his belongings I was fortunate enough to
+discover not only the method of the crime, but even its motives. As a
+man of the world, Colonel, you know that men do not carry other people's
+bills about in their pockets. We have most of us quite enough to do to
+settle our own. I at once concluded that Straker was leading a double
+life, and keeping a second establishment. The nature of the bill showed
+that there was a lady in the case, and one who had expensive tastes.
+Liberal as you are with your servants, one can hardly expect that they
+can buy twenty-guinea walking dresses for their ladies. I questioned
+Mrs. Straker as to the dress without her knowing it, and having
+satisfied myself that it had never reached her, I made a note of the
+milliner's address, and felt that by calling there with Straker's
+photograph I could easily dispose of the mythical Derbyshire.
+
+"From that time on all was plain. Straker had led out the horse to a
+hollow where his light would be invisible. Simpson in his flight had
+dropped his cravat, and Straker had picked it up--with some idea,
+perhaps, that he might use it in securing the horse's leg. Once in the
+hollow, he had got behind the horse and had struck a light; but the
+creature frightened at the sudden glare, and with the strange instinct
+of animals feeling that some mischief was intended, had lashed out, and
+the steel shoe had struck Straker full on the forehead. He had already,
+in spite of the rain, taken off his overcoat in order to do his delicate
+task, and so, as he fell, his knife gashed his thigh. Do I make it
+clear?"
+
+"Wonderful!" cried the Colonel. "Wonderful! You might have been there!"
+
+"My final shot was, I confess a very long one. It struck me that so
+astute a man as Straker would not undertake this delicate tendon-nicking
+without a little practice. What could he practice on? My eyes fell upon
+the sheep, and I asked a question which, rather to my surprise, showed
+that my surmise was correct.
+
+"When I returned to London I called upon the milliner, who had
+recognized Straker as an excellent customer of the name of Derbyshire,
+who had a very dashing wife, with a strong partiality for expensive
+dresses. I have no doubt that this woman had plunged him over head and
+ears in debt, and so led him into this miserable plot."
+
+"You have explained all but one thing," cried the Colonel. "Where was
+the horse?"
+
+"Ah, it bolted, and was cared for by one of your neighbors. We must have
+an amnesty in that direction, I think. This is Clapham Junction, if I am
+not mistaken, and we shall be in Victoria in less than ten minutes. If
+you care to smoke a cigar in our rooms, Colonel, I shall be happy to
+give you any other details which might interest you."
+
+
+
+
+Adventure II. The Yellow Face
+
+
+[In publishing these short sketches based upon the numerous cases in
+which my companion's singular gifts have made us the listeners to, and
+eventually the actors in, some strange drama, it is only natural that I
+should dwell rather upon his successes than upon his failures. And this
+not so much for the sake of his reputation--for, indeed, it was when
+he was at his wits' end that his energy and his versatility were most
+admirable--but because where he failed it happened too often that no one
+else succeeded, and that the tale was left forever without a conclusion.
+Now and again, however, it chanced that even when he erred, the truth
+was still discovered. I have noted of some half-dozen cases of the
+kind; the Adventure of the Musgrave Ritual and that which I am about to
+recount are the two which present the strongest features of interest.]
+
+Sherlock Holmes was a man who seldom took exercise for exercise's sake.
+Few men were capable of greater muscular effort, and he was undoubtedly
+one of the finest boxers of his weight that I have ever seen; but he
+looked upon aimless bodily exertion as a waste of energy, and he seldom
+bestirred himself save when there was some professional object to be
+served. Then he was absolutely untiring and indefatigable. That he
+should have kept himself in training under such circumstances is
+remarkable, but his diet was usually of the sparest, and his habits
+were simple to the verge of austerity. Save for the occasional use of
+cocaine, he had no vices, and he only turned to the drug as a protest
+against the monotony of existence when cases were scanty and the papers
+uninteresting.
+
+One day in early spring he had so far relaxed as to go for a walk with
+me in the Park, where the first faint shoots of green were breaking out
+upon the elms, and the sticky spear-heads of the chestnuts were just
+beginning to burst into their five-fold leaves. For two hours we rambled
+about together, in silence for the most part, as befits two men who know
+each other intimately. It was nearly five before we were back in Baker
+Street once more.
+
+"Beg pardon, sir," said our page-boy, as he opened the door. "There's
+been a gentleman here asking for you, sir."
+
+Holmes glanced reproachfully at me. "So much for afternoon walks!" said
+he. "Has this gentleman gone, then?"
+
+"Yes, sir."
+
+"Didn't you ask him in?"
+
+"Yes, sir; he came in."
+
+"How long did he wait?"
+
+"Half an hour, sir. He was a very restless gentleman, sir, a-walkin'
+and a-stampin' all the time he was here. I was waitin' outside the door,
+sir, and I could hear him. At last he outs into the passage, and he
+cries, 'Is that man never goin' to come?' Those were his very words,
+sir. 'You'll only need to wait a little longer,' says I. 'Then I'll wait
+in the open air, for I feel half choked,' says he. 'I'll be back before
+long.' And with that he ups and he outs, and all I could say wouldn't
+hold him back."
+
+"Well, well, you did your best," said Holmes, as we walked into our
+room. "It's very annoying, though, Watson. I was badly in need of
+a case, and this looks, from the man's impatience, as if it were of
+importance. Hullo! That's not your pipe on the table. He must have
+left his behind him. A nice old brier with a good long stem of what the
+tobacconists call amber. I wonder how many real amber mouthpieces there
+are in London? Some people think that a fly in it is a sign. Well, he
+must have been disturbed in his mind to leave a pipe behind him which he
+evidently values highly."
+
+"How do you know that he values it highly?" I asked.
+
+"Well, I should put the original cost of the pipe at seven and sixpence.
+Now it has, you see, been twice mended, once in the wooden stem and once
+in the amber. Each of these mends, done, as you observe, with silver
+bands, must have cost more than the pipe did originally. The man must
+value the pipe highly when he prefers to patch it up rather than buy a
+new one with the same money."
+
+"Anything else?" I asked, for Holmes was turning the pipe about in his
+hand, and staring at it in his peculiar pensive way.
+
+He held it up and tapped on it with his long, thin fore-finger, as a
+professor might who was lecturing on a bone.
+
+"Pipes are occasionally of extraordinary interest," said he. "Nothing
+has more individuality, save perhaps watches and bootlaces. The
+indications here, however, are neither very marked nor very important.
+The owner is obviously a muscular man, left-handed, with an excellent
+set of teeth, careless in his habits, and with no need to practise
+economy."
+
+My friend threw out the information in a very offhand way, but I saw
+that he cocked his eye at me to see if I had followed his reasoning.
+
+"You think a man must be well-to-do if he smokes a seven-shilling pipe,"
+said I.
+
+"This is Grosvenor mixture at eightpence an ounce," Holmes answered,
+knocking a little out on his palm. "As he might get an excellent smoke
+for half the price, he has no need to practise economy."
+
+"And the other points?"
+
+"He has been in the habit of lighting his pipe at lamps and gas-jets.
+You can see that it is quite charred all down one side. Of course a
+match could not have done that. Why should a man hold a match to the
+side of his pipe? But you cannot light it at a lamp without getting the
+bowl charred. And it is all on the right side of the pipe. From that I
+gather that he is a left-handed man. You hold your own pipe to the lamp,
+and see how naturally you, being right-handed, hold the left side to the
+flame. You might do it once the other way, but not as a constancy. This
+has always been held so. Then he has bitten through his amber. It takes
+a muscular, energetic fellow, and one with a good set of teeth, to do
+that. But if I am not mistaken I hear him upon the stair, so we shall
+have something more interesting than his pipe to study."
+
+An instant later our door opened, and a tall young man entered the room.
+He was well but quietly dressed in a dark-gray suit, and carried a brown
+wide-awake in his hand. I should have put him at about thirty, though he
+was really some years older.
+
+"I beg your pardon," said he, with some embarrassment; "I suppose I
+should have knocked. Yes, of course I should have knocked. The fact
+is that I am a little upset, and you must put it all down to that." He
+passed his hand over his forehead like a man who is half dazed, and then
+fell rather than sat down upon a chair.
+
+"I can see that you have not slept for a night or two," said Holmes,
+in his easy, genial way. "That tries a man's nerves more than work, and
+more even than pleasure. May I ask how I can help you?"
+
+"I wanted your advice, sir. I don't know what to do and my whole life
+seems to have gone to pieces."
+
+"You wish to employ me as a consulting detective?"
+
+"Not that only. I want your opinion as a judicious man--as a man of the
+world. I want to know what I ought to do next. I hope to God you'll be
+able to tell me."
+
+He spoke in little, sharp, jerky outbursts, and it seemed to me that to
+speak at all was very painful to him, and that his will all through was
+overriding his inclinations.
+
+"It's a very delicate thing," said he. "One does not like to speak of
+one's domestic affairs to strangers. It seems dreadful to discuss the
+conduct of one's wife with two men whom I have never seen before. It's
+horrible to have to do it. But I've got to the end of my tether, and I
+must have advice."
+
+"My dear Mr. Grant Munro--" began Holmes.
+
+Our visitor sprang from his chair. "What!" he cried, "you know my name?"
+
+"If you wish to preserve your incognito," said Holmes, smiling, "I would
+suggest that you cease to write your name upon the lining of your
+hat, or else that you turn the crown towards the person whom you are
+addressing. I was about to say that my friend and I have listened to a
+good many strange secrets in this room, and that we have had the good
+fortune to bring peace to many troubled souls. I trust that we may do as
+much for you. Might I beg you, as time may prove to be of importance, to
+furnish me with the facts of your case without further delay?"
+
+Our visitor again passed his hand over his forehead, as if he found it
+bitterly hard. From every gesture and expression I could see that he was
+a reserved, self-contained man, with a dash of pride in his nature, more
+likely to hide his wounds than to expose them. Then suddenly, with a
+fierce gesture of his closed hand, like one who throws reserve to the
+winds, he began.
+
+"The facts are these, Mr. Holmes," said he. "I am a married man, and
+have been so for three years. During that time my wife and I have loved
+each other as fondly and lived as happily as any two that ever were
+joined. We have not had a difference, not one, in thought or word or
+deed. And now, since last Monday, there has suddenly sprung up a barrier
+between us, and I find that there is something in her life and in her
+thought of which I know as little as if she were the woman who brushes
+by me in the street. We are estranged, and I want to know why.
+
+"Now there is one thing that I want to impress upon you before I go
+any further, Mr. Holmes. Effie loves me. Don't let there be any mistake
+about that. She loves me with her whole heart and soul, and never more
+than now. I know it. I feel it. I don't want to argue about that. A man
+can tell easily enough when a woman loves him. But there's this secret
+between us, and we can never be the same until it is cleared."
+
+"Kindly let me have the facts, Mr. Munro," said Holmes, with some
+impatience.
+
+"I'll tell you what I know about Effie's history. She was a widow when
+I met her first, though quite young--only twenty-five. Her name then was
+Mrs. Hebron. She went out to America when she was young, and lived in
+the town of Atlanta, where she married this Hebron, who was a lawyer
+with a good practice. They had one child, but the yellow fever broke out
+badly in the place, and both husband and child died of it. I have seen
+his death certificate. This sickened her of America, and she came back
+to live with a maiden aunt at Pinner, in Middlesex. I may mention that
+her husband had left her comfortably off, and that she had a capital of
+about four thousand five hundred pounds, which had been so well invested
+by him that it returned an average of seven per cent. She had only been
+six months at Pinner when I met her; we fell in love with each other,
+and we married a few weeks afterwards.
+
+"I am a hop merchant myself, and as I have an income of seven or
+eight hundred, we found ourselves comfortably off, and took a nice
+eighty-pound-a-year villa at Norbury. Our little place was very
+countrified, considering that it is so close to town. We had an inn and
+two houses a little above us, and a single cottage at the other side of
+the field which faces us, and except those there were no houses until
+you got half way to the station. My business took me into town at
+certain seasons, but in summer I had less to do, and then in our country
+home my wife and I were just as happy as could be wished. I tell you
+that there never was a shadow between us until this accursed affair
+began.
+
+"There's one thing I ought to tell you before I go further. When we
+married, my wife made over all her property to me--rather against my
+will, for I saw how awkward it would be if my business affairs went
+wrong. However, she would have it so, and it was done. Well, about six
+weeks ago she came to me.
+
+"'Jack,' said she, 'when you took my money you said that if ever I
+wanted any I was to ask you for it.'
+
+"'Certainly,' said I. 'It's all your own.'
+
+"'Well,' said she, 'I want a hundred pounds.'
+
+"I was a bit staggered at this, for I had imagined it was simply a new
+dress or something of the kind that she was after.
+
+"'What on earth for?' I asked.
+
+"'Oh,' said she, in her playful way, 'you said that you were only my
+banker, and bankers never ask questions, you know.'
+
+"'If you really mean it, of course you shall have the money,' said I.
+
+"'Oh, yes, I really mean it.'
+
+"'And you won't tell me what you want it for?'
+
+"'Some day, perhaps, but not just at present, Jack.'
+
+"So I had to be content with that, though it was the first time that
+there had ever been any secret between us. I gave her a check, and I
+never thought any more of the matter. It may have nothing to do with
+what came afterwards, but I thought it only right to mention it.
+
+"Well, I told you just now that there is a cottage not far from our
+house. There is just a field between us, but to reach it you have to
+go along the road and then turn down a lane. Just beyond it is a nice
+little grove of Scotch firs, and I used to be very fond of strolling
+down there, for trees are always a neighborly kind of things. The
+cottage had been standing empty this eight months, and it was a pity,
+for it was a pretty two-storied place, with an old-fashioned porch and
+honeysuckle about it. I have stood many a time and thought what a neat
+little homestead it would make.
+
+"Well, last Monday evening I was taking a stroll down that way, when
+I met an empty van coming up the lane, and saw a pile of carpets and
+things lying about on the grass-plot beside the porch. It was clear that
+the cottage had at last been let. I walked past it, and wondered what
+sort of folk they were who had come to live so near us. And as I looked
+I suddenly became aware that a face was watching me out of one of the
+upper windows.
+
+"I don't know what there was about that face, Mr. Holmes, but it seemed
+to send a chill right down my back. I was some little way off, so that
+I could not make out the features, but there was something unnatural and
+inhuman about the face. That was the impression that I had, and I moved
+quickly forwards to get a nearer view of the person who was watching
+me. But as I did so the face suddenly disappeared, so suddenly that it
+seemed to have been plucked away into the darkness of the room. I stood
+for five minutes thinking the business over, and trying to analyze my
+impressions. I could not tell if the face were that of a man or a
+woman. It had been too far from me for that. But its color was what had
+impressed me most. It was of a livid chalky white, and with something
+set and rigid about it which was shockingly unnatural. So disturbed
+was I that I determined to see a little more of the new inmates of
+the cottage. I approached and knocked at the door, which was instantly
+opened by a tall, gaunt woman with a harsh, forbidding face.
+
+"'What may you be wantin'?' she asked, in a Northern accent.
+
+"'I am your neighbor over yonder,' said I, nodding towards my house. 'I
+see that you have only just moved in, so I thought that if I could be of
+any help to you in any--'
+
+"'Ay, we'll just ask ye when we want ye,' said she, and shut the door
+in my face. Annoyed at the churlish rebuff, I turned my back and walked
+home. All evening, though I tried to think of other things, my mind
+would still turn to the apparition at the window and the rudeness of the
+woman. I determined to say nothing about the former to my wife, for
+she is a nervous, highly strung woman, and I had no wish that she would
+share the unpleasant impression which had been produced upon myself. I
+remarked to her, however, before I fell asleep, that the cottage was now
+occupied, to which she returned no reply.
+
+"I am usually an extremely sound sleeper. It has been a standing jest
+in the family that nothing could ever wake me during the night. And yet
+somehow on that particular night, whether it may have been the slight
+excitement produced by my little adventure or not I know not, but
+I slept much more lightly than usual. Half in my dreams I was dimly
+conscious that something was going on in the room, and gradually became
+aware that my wife had dressed herself and was slipping on her mantle
+and her bonnet. My lips were parted to murmur out some sleepy words of
+surprise or remonstrance at this untimely preparation, when suddenly my
+half-opened eyes fell upon her face, illuminated by the candle-light,
+and astonishment held me dumb. She wore an expression such as I had
+never seen before--such as I should have thought her incapable of
+assuming. She was deadly pale and breathing fast, glancing furtively
+towards the bed as she fastened her mantle, to see if she had disturbed
+me. Then, thinking that I was still asleep, she slipped noiselessly from
+the room, and an instant later I heard a sharp creaking which could only
+come from the hinges of the front door. I sat up in bed and rapped my
+knuckles against the rail to make certain that I was truly awake. Then
+I took my watch from under the pillow. It was three in the morning. What
+on this earth could my wife be doing out on the country road at three in
+the morning?
+
+"I had sat for about twenty minutes turning the thing over in my mind
+and trying to find some possible explanation. The more I thought, the
+more extraordinary and inexplicable did it appear. I was still puzzling
+over it when I heard the door gently close again, and her footsteps
+coming up the stairs.
+
+"'Where in the world have you been, Effie?' I asked as she entered.
+
+"She gave a violent start and a kind of gasping cry when I spoke, and
+that cry and start troubled me more than all the rest, for there was
+something indescribably guilty about them. My wife had always been
+a woman of a frank, open nature, and it gave me a chill to see her
+slinking into her own room, and crying out and wincing when her own
+husband spoke to her.
+
+"'You awake, Jack!' she cried, with a nervous laugh. 'Why, I thought
+that nothing could awake you.'
+
+"'Where have you been?' I asked, more sternly.
+
+"'I don't wonder that you are surprised,' said she, and I could see that
+her fingers were trembling as she undid the fastenings of her mantle.
+'Why, I never remember having done such a thing in my life before. The
+fact is that I felt as though I were choking, and had a perfect longing
+for a breath of fresh air. I really think that I should have fainted if
+I had not gone out. I stood at the door for a few minutes, and now I am
+quite myself again.'
+
+"All the time that she was telling me this story she never once looked
+in my direction, and her voice was quite unlike her usual tones. It
+was evident to me that she was saying what was false. I said nothing
+in reply, but turned my face to the wall, sick at heart, with my mind
+filled with a thousand venomous doubts and suspicions. What was it that
+my wife was concealing from me? Where had she been during that strange
+expedition? I felt that I should have no peace until I knew, and yet I
+shrank from asking her again after once she had told me what was false.
+All the rest of the night I tossed and tumbled, framing theory after
+theory, each more unlikely than the last.
+
+"I should have gone to the City that day, but I was too disturbed in my
+mind to be able to pay attention to business matters. My wife seemed
+to be as upset as myself, and I could see from the little questioning
+glances which she kept shooting at me that she understood that I
+disbelieved her statement, and that she was at her wits' end what to do.
+We hardly exchanged a word during breakfast, and immediately afterwards
+I went out for a walk, that I might think the matter out in the fresh
+morning air.
+
+"I went as far as the Crystal Palace, spent an hour in the grounds, and
+was back in Norbury by one o'clock. It happened that my way took me past
+the cottage, and I stopped for an instant to look at the windows, and to
+see if I could catch a glimpse of the strange face which had looked
+out at me on the day before. As I stood there, imagine my surprise, Mr.
+Holmes, when the door suddenly opened and my wife walked out.
+
+"I was struck dumb with astonishment at the sight of her; but my
+emotions were nothing to those which showed themselves upon her face
+when our eyes met. She seemed for an instant to wish to shrink back
+inside the house again; and then, seeing how useless all concealment
+must be, she came forward, with a very white face and frightened eyes
+which belied the smile upon her lips.
+
+"'Ah, Jack,' she said, 'I have just been in to see if I can be of any
+assistance to our new neighbors. Why do you look at me like that, Jack?
+You are not angry with me?'
+
+"'So,' said I, 'this is where you went during the night.'
+
+"'What do you mean?' she cried.
+
+"'You came here. I am sure of it. Who are these people, that you should
+visit them at such an hour?'
+
+"'I have not been here before.'
+
+"'How can you tell me what you know is false?' I cried. 'Your very voice
+changes as you speak. When have I ever had a secret from you? I shall
+enter that cottage, and I shall probe the matter to the bottom.'
+
+"'No, no, Jack, for God's sake!' she gasped, in uncontrollable emotion.
+Then, as I approached the door, she seized my sleeve and pulled me back
+with convulsive strength.
+
+"'I implore you not to do this, Jack,' she cried. 'I swear that I will
+tell you everything some day, but nothing but misery can come of it if
+you enter that cottage.' Then, as I tried to shake her off, she clung to
+me in a frenzy of entreaty.
+
+"'Trust me, Jack!' she cried. 'Trust me only this once. You will never
+have cause to regret it. You know that I would not have a secret from
+you if it were not for your own sake. Our whole lives are at stake in
+this. If you come home with me, all will be well. If you force your way
+into that cottage, all is over between us.'
+
+"There was such earnestness, such despair, in her manner that her words
+arrested me, and I stood irresolute before the door.
+
+"'I will trust you on one condition, and on one condition only,' said I
+at last. 'It is that this mystery comes to an end from now. You are
+at liberty to preserve your secret, but you must promise me that there
+shall be no more nightly visits, no more doings which are kept from my
+knowledge. I am willing to forget those which are passed if you will
+promise that there shall be no more in the future.'
+
+"'I was sure that you would trust me,' she cried, with a great sigh of
+relief. 'It shall be just as you wish. Come away--oh, come away up to
+the house.'
+
+"Still pulling at my sleeve, she led me away from the cottage. As we
+went I glanced back, and there was that yellow livid face watching us
+out of the upper window. What link could there be between that creature
+and my wife? Or how could the coarse, rough woman whom I had seen the
+day before be connected with her? It was a strange puzzle, and yet I
+knew that my mind could never know ease again until I had solved it.
+
+"For two days after this I stayed at home, and my wife appeared to abide
+loyally by our engagement, for, as far as I know, she never stirred out
+of the house. On the third day, however, I had ample evidence that
+her solemn promise was not enough to hold her back from this secret
+influence which drew her away from her husband and her duty.
+
+"I had gone into town on that day, but I returned by the 2.40 instead of
+the 3.36, which is my usual train. As I entered the house the maid ran
+into the hall with a startled face.
+
+"'Where is your mistress?' I asked.
+
+"'I think that she has gone out for a walk,' she answered.
+
+"My mind was instantly filled with suspicion. I rushed upstairs to make
+sure that she was not in the house. As I did so I happened to glance out
+of one of the upper windows, and saw the maid with whom I had just been
+speaking running across the field in the direction of the cottage. Then
+of course I saw exactly what it all meant. My wife had gone over there,
+and had asked the servant to call her if I should return. Tingling with
+anger, I rushed down and hurried across, determined to end the matter
+once and forever. I saw my wife and the maid hurrying back along the
+lane, but I did not stop to speak with them. In the cottage lay the
+secret which was casting a shadow over my life. I vowed that, come what
+might, it should be a secret no longer. I did not even knock when I
+reached it, but turned the handle and rushed into the passage.
+
+"It was all still and quiet upon the ground floor. In the kitchen a
+kettle was singing on the fire, and a large black cat lay coiled up in
+the basket; but there was no sign of the woman whom I had seen before.
+I ran into the other room, but it was equally deserted. Then I rushed up
+the stairs, only to find two other rooms empty and deserted at the top.
+There was no one at all in the whole house. The furniture and pictures
+were of the most common and vulgar description, save in the one chamber
+at the window of which I had seen the strange face. That was comfortable
+and elegant, and all my suspicions rose into a fierce bitter flame when
+I saw that on the mantelpiece stood a copy of a full-length photograph
+of my wife, which had been taken at my request only three months ago.
+
+"I stayed long enough to make certain that the house was absolutely
+empty. Then I left it, feeling a weight at my heart such as I had never
+had before. My wife came out into the hall as I entered my house; but I
+was too hurt and angry to speak with her, and pushing past her, I made
+my way into my study. She followed me, however, before I could close the
+door.
+
+"'I am sorry that I broke my promise, Jack,' said she; 'but if you knew
+all the circumstances I am sure that you would forgive me.'
+
+"'Tell me everything, then,' said I.
+
+"'I cannot, Jack, I cannot,' she cried.
+
+"'Until you tell me who it is that has been living in that cottage, and
+who it is to whom you have given that photograph, there can never be any
+confidence between us,' said I, and breaking away from her, I left the
+house. That was yesterday, Mr. Holmes, and I have not seen her since,
+nor do I know anything more about this strange business. It is the first
+shadow that has come between us, and it has so shaken me that I do not
+know what I should do for the best. Suddenly this morning it occurred to
+me that you were the man to advise me, so I have hurried to you now, and
+I place myself unreservedly in your hands. If there is any point which I
+have not made clear, pray question me about it. But, above all, tell me
+quickly what I am to do, for this misery is more than I can bear."
+
+Holmes and I had listened with the utmost interest to this extraordinary
+statement, which had been delivered in the jerky, broken fashion of a
+man who is under the influence of extreme emotions. My companion sat
+silent for some time, with his chin upon his hand, lost in thought.
+
+"Tell me," said he at last, "could you swear that this was a man's face
+which you saw at the window?"
+
+"Each time that I saw it I was some distance away from it, so that it is
+impossible for me to say."
+
+"You appear, however, to have been disagreeably impressed by it."
+
+"It seemed to be of an unnatural color, and to have a strange rigidity
+about the features. When I approached, it vanished with a jerk."
+
+"How long is it since your wife asked you for a hundred pounds?"
+
+"Nearly two months."
+
+"Have you ever seen a photograph of her first husband?"
+
+"No; there was a great fire at Atlanta very shortly after his death, and
+all her papers were destroyed."
+
+"And yet she had a certificate of death. You say that you saw it."
+
+"Yes; she got a duplicate after the fire."
+
+"Did you ever meet any one who knew her in America?"
+
+"No."
+
+"Did she ever talk of revisiting the place?"
+
+"No."
+
+"Or get letters from it?"
+
+"No."
+
+"Thank you. I should like to think over the matter a little now. If the
+cottage is now permanently deserted we may have some difficulty. If, on
+the other hand, as I fancy is more likely, the inmates were warned of
+your coming, and left before you entered yesterday, then they may be
+back now, and we should clear it all up easily. Let me advise you, then,
+to return to Norbury, and to examine the windows of the cottage again.
+If you have reason to believe that it is inhabited, do not force your
+way in, but send a wire to my friend and me. We shall be with you within
+an hour of receiving it, and we shall then very soon get to the bottom
+of the business."
+
+"And if it is still empty?"
+
+"In that case I shall come out to-morrow and talk it over with you.
+Good-by; and, above all, do not fret until you know that you really have
+a cause for it."
+
+"I am afraid that this is a bad business, Watson," said my companion, as
+he returned after accompanying Mr. Grant Munro to the door. "What do you
+make of it?"
+
+"It had an ugly sound," I answered.
+
+"Yes. There's blackmail in it, or I am much mistaken."
+
+"And who is the blackmailer?"
+
+"Well, it must be the creature who lives in the only comfortable room
+in the place, and has her photograph above his fireplace. Upon my word,
+Watson, there is something very attractive about that livid face at the
+window, and I would not have missed the case for worlds."
+
+"You have a theory?"
+
+"Yes, a provisional one. But I shall be surprised if it does not turn
+out to be correct. This woman's first husband is in that cottage."
+
+"Why do you think so?"
+
+"How else can we explain her frenzied anxiety that her second one should
+not enter it? The facts, as I read them, are something like this:
+This woman was married in America. Her husband developed some hateful
+qualities; or shall we say that he contracted some loathsome disease,
+and became a leper or an imbecile? She flies from him at last, returns
+to England, changes her name, and starts her life, as she thinks,
+afresh. She has been married three years, and believes that her position
+is quite secure, having shown her husband the death certificate of
+some man whose name she has assumed, when suddenly her whereabouts
+is discovered by her first husband; or, we may suppose, by some
+unscrupulous woman who has attached herself to the invalid. They write
+to the wife, and threaten to come and expose her. She asks for a hundred
+pounds, and endeavors to buy them off. They come in spite of it, and
+when the husband mentions casually to the wife that there are new-comers
+in the cottage, she knows in some way that they are her pursuers. She
+waits until her husband is asleep, and then she rushes down to endeavor
+to persuade them to leave her in peace. Having no success, she goes
+again next morning, and her husband meets her, as he has told us, as
+she comes out. She promises him then not to go there again, but two days
+afterwards the hope of getting rid of those dreadful neighbors was too
+strong for her, and she made another attempt, taking down with her the
+photograph which had probably been demanded from her. In the midst of
+this interview the maid rushed in to say that the master had come home,
+on which the wife, knowing that he would come straight down to the
+cottage, hurried the inmates out at the back door, into the grove of
+fir-trees, probably, which was mentioned as standing near. In this way
+he found the place deserted. I shall be very much surprised, however, if
+it is still so when he reconnoitres it this evening. What do you think
+of my theory?"
+
+"It is all surmise."
+
+"But at least it covers all the facts. When new facts come to our
+knowledge which cannot be covered by it, it will be time enough to
+reconsider it. We can do nothing more until we have a message from our
+friend at Norbury."
+
+But we had not a very long time to wait for that. It came just as we had
+finished our tea. "The cottage is still tenanted," it said. "Have seen
+the face again at the window. Will meet the seven o'clock train, and
+will take no steps until you arrive."
+
+
+He was waiting on the platform when we stepped out, and we could see in
+the light of the station lamps that he was very pale, and quivering with
+agitation.
+
+"They are still there, Mr. Holmes," said he, laying his hand hard upon
+my friend's sleeve. "I saw lights in the cottage as I came down. We
+shall settle it now once and for all."
+
+"What is your plan, then?" asked Holmes, as he walked down the dark
+tree-lined road.
+
+"I am going to force my way in and see for myself who is in the house. I
+wish you both to be there as witnesses."
+
+"You are quite determined to do this, in spite of your wife's warning
+that it is better that you should not solve the mystery?"
+
+"Yes, I am determined."
+
+"Well, I think that you are in the right. Any truth is better than
+indefinite doubt. We had better go up at once. Of course, legally, we
+are putting ourselves hopelessly in the wrong; but I think that it is
+worth it."
+
+It was a very dark night, and a thin rain began to fall as we turned
+from the high road into a narrow lane, deeply rutted, with hedges on
+either side. Mr. Grant Munro pushed impatiently forward, however, and we
+stumbled after him as best we could.
+
+"There are the lights of my house," he murmured, pointing to a glimmer
+among the trees. "And here is the cottage which I am going to enter."
+
+We turned a corner in the lane as he spoke, and there was the building
+close beside us. A yellow bar falling across the black foreground showed
+that the door was not quite closed, and one window in the upper story
+was brightly illuminated. As we looked, we saw a dark blur moving across
+the blind.
+
+"There is that creature!" cried Grant Munro. "You can see for yourselves
+that some one is there. Now follow me, and we shall soon know all."
+
+We approached the door; but suddenly a woman appeared out of the shadow
+and stood in the golden track of the lamp-light. I could not see her
+face in the darkness, but her arms were thrown out in an attitude of
+entreaty.
+
+"For God's sake, don't Jack!" she cried. "I had a presentiment that you
+would come this evening. Think better of it, dear! Trust me again, and
+you will never have cause to regret it."
+
+"I have trusted you too long, Effie," he cried, sternly. "Leave go of
+me! I must pass you. My friends and I are going to settle this matter
+once and forever!" He pushed her to one side, and we followed closely
+after him. As he threw the door open an old woman ran out in front of
+him and tried to bar his passage, but he thrust her back, and an instant
+afterwards we were all upon the stairs. Grant Munro rushed into the
+lighted room at the top, and we entered at his heels.
+
+It was a cosey, well-furnished apartment, with two candles burning upon
+the table and two upon the mantelpiece. In the corner, stooping over a
+desk, there sat what appeared to be a little girl. Her face was turned
+away as we entered, but we could see that she was dressed in a red
+frock, and that she had long white gloves on. As she whisked round
+to us, I gave a cry of surprise and horror. The face which she turned
+towards us was of the strangest livid tint, and the features were
+absolutely devoid of any expression. An instant later the mystery was
+explained. Holmes, with a laugh, passed his hand behind the child's
+ear, a mask peeled off from her countenance, and there was a little coal
+black negress, with all her white teeth flashing in amusement at our
+amazed faces. I burst out laughing, out of sympathy with her merriment;
+but Grant Munro stood staring, with his hand clutching his throat.
+
+"My God!" he cried. "What can be the meaning of this?"
+
+"I will tell you the meaning of it," cried the lady, sweeping into
+the room with a proud, set face. "You have forced me, against my own
+judgment, to tell you, and now we must both make the best of it. My
+husband died at Atlanta. My child survived."
+
+"Your child?"
+
+She drew a large silver locket from her bosom. "You have never seen this
+open."
+
+"I understood that it did not open."
+
+She touched a spring, and the front hinged back. There was a portrait
+within of a man strikingly handsome and intelligent-looking, but bearing
+unmistakable signs upon his features of his African descent.
+
+"That is John Hebron, of Atlanta," said the lady, "and a nobler man
+never walked the earth. I cut myself off from my race in order to wed
+him, but never once while he lived did I for an instant regret it. It
+was our misfortune that our only child took after his people rather than
+mine. It is often so in such matches, and little Lucy is darker far than
+ever her father was. But dark or fair, she is my own dear little girlie,
+and her mother's pet." The little creature ran across at the words and
+nestled up against the lady's dress. "When I left her in America," she
+continued, "it was only because her health was weak, and the change
+might have done her harm. She was given to the care of a faithful Scotch
+woman who had once been our servant. Never for an instant did I dream
+of disowning her as my child. But when chance threw you in my way, Jack,
+and I learned to love you, I feared to tell you about my child. God
+forgive me, I feared that I should lose you, and I had not the courage
+to tell you. I had to choose between you, and in my weakness I turned
+away from my own little girl. For three years I have kept her existence
+a secret from you, but I heard from the nurse, and I knew that all was
+well with her. At last, however, there came an overwhelming desire to
+see the child once more. I struggled against it, but in vain. Though I
+knew the danger, I determined to have the child over, if it were but
+for a few weeks. I sent a hundred pounds to the nurse, and I gave her
+instructions about this cottage, so that she might come as a neighbor,
+without my appearing to be in any way connected with her. I pushed my
+precautions so far as to order her to keep the child in the house during
+the daytime, and to cover up her little face and hands so that even
+those who might see her at the window should not gossip about there
+being a black child in the neighborhood. If I had been less cautious
+I might have been more wise, but I was half crazy with fear that you
+should learn the truth.
+
+"It was you who told me first that the cottage was occupied. I should
+have waited for the morning, but I could not sleep for excitement, and
+so at last I slipped out, knowing how difficult it is to awake you. But
+you saw me go, and that was the beginning of my troubles. Next day you
+had my secret at your mercy, but you nobly refrained from pursuing your
+advantage. Three days later, however, the nurse and child only just
+escaped from the back door as you rushed in at the front one. And now
+to-night you at last know all, and I ask you what is to become of us, my
+child and me?" She clasped her hands and waited for an answer.
+
+It was a long ten minutes before Grant Munro broke the silence, and
+when his answer came it was one of which I love to think. He lifted
+the little child, kissed her, and then, still carrying her, he held his
+other hand out to his wife and turned towards the door.
+
+"We can talk it over more comfortably at home," said he. "I am not a
+very good man, Effie, but I think that I am a better one than you have
+given me credit for being."
+
+Holmes and I followed them down the lane, and my friend plucked at my
+sleeve as we came out.
+
+"I think," said he, "that we shall be of more use in London than in
+Norbury."
+
+Not another word did he say of the case until late that night, when he
+was turning away, with his lighted candle, for his bedroom.
+
+"Watson," said he, "if it should ever strike you that I am getting a
+little over-confident in my powers, or giving less pains to a case
+than it deserves, kindly whisper 'Norbury' in my ear, and I shall be
+infinitely obliged to you."
+
+
+
+
+Adventure III. The Stock-Broker's Clerk
+
+
+Shortly after my marriage I had bought a connection in the Paddington
+district. Old Mr. Farquhar, from whom I purchased it, had at one time an
+excellent general practice; but his age, and an affliction of the nature
+of St. Vitus's dance from which he suffered, had very much thinned it.
+The public not unnaturally goes on the principle that he who would heal
+others must himself be whole, and looks askance at the curative powers
+of the man whose own case is beyond the reach of his drugs. Thus as my
+predecessor weakened his practice declined, until when I purchased
+it from him it had sunk from twelve hundred to little more than three
+hundred a year. I had confidence, however, in my own youth and energy,
+and was convinced that in a very few years the concern would be as
+flourishing as ever.
+
+For three months after taking over the practice I was kept very closely
+at work, and saw little of my friend Sherlock Holmes, for I was too busy
+to visit Baker Street, and he seldom went anywhere himself save upon
+professional business. I was surprised, therefore, when, one morning in
+June, as I sat reading the British Medical Journal after breakfast, I
+heard a ring at the bell, followed by the high, somewhat strident tones
+of my old companion's voice.
+
+"Ah, my dear Watson," said he, striding into the room, "I am very
+delighted to see you! I trust that Mrs. Watson has entirely recovered
+from all the little excitements connected with our adventure of the Sign
+of Four."
+
+"Thank you, we are both very well," said I, shaking him warmly by the
+hand.
+
+"And I hope, also," he continued, sitting down in the rocking-chair,
+"that the cares of medical practice have not entirely obliterated the
+interest which you used to take in our little deductive problems."
+
+"On the contrary," I answered, "it was only last night that I was
+looking over my old notes, and classifying some of our past results."
+
+"I trust that you don't consider your collection closed."
+
+"Not at all. I should wish nothing better than to have some more of such
+experiences."
+
+"To-day, for example?"
+
+"Yes, to-day, if you like."
+
+"And as far off as Birmingham?"
+
+"Certainly, if you wish it."
+
+"And the practice?"
+
+"I do my neighbor's when he goes. He is always ready to work off the
+debt."
+
+"Ha! Nothing could be better," said Holmes, leaning back in his chair
+and looking keenly at me from under his half closed lids. "I perceive
+that you have been unwell lately. Summer colds are always a little
+trying."
+
+"I was confined to the house by a severe chill for three days last week.
+I thought, however, that I had cast off every trace of it."
+
+"So you have. You look remarkably robust."
+
+"How, then, did you know of it?"
+
+"My dear fellow, you know my methods."
+
+"You deduced it, then?"
+
+"Certainly."
+
+"And from what?"
+
+"From your slippers."
+
+I glanced down at the new patent leathers which I was wearing. "How on
+earth--" I began, but Holmes answered my question before it was asked.
+
+"Your slippers are new," he said. "You could not have had them more than
+a few weeks. The soles which you are at this moment presenting to me are
+slightly scorched. For a moment I thought they might have got wet and
+been burned in the drying. But near the instep there is a small circular
+wafer of paper with the shopman's hieroglyphics upon it. Damp would of
+course have removed this. You had, then, been sitting with your feet
+outstretched to the fire, which a man would hardly do even in so wet a
+June as this if he were in his full health."
+
+Like all Holmes's reasoning the thing seemed simplicity itself when it
+was once explained. He read the thought upon my features, and his smile
+had a tinge of bitterness.
+
+"I am afraid that I rather give myself away when I explain," said he.
+"Results without causes are much more impressive. You are ready to come
+to Birmingham, then?"
+
+"Certainly. What is the case?"
+
+"You shall hear it all in the train. My client is outside in a
+four-wheeler. Can you come at once?"
+
+"In an instant." I scribbled a note to my neighbor, rushed upstairs to
+explain the matter to my wife, and joined Holmes upon the door-step.
+
+"Your neighbor is a doctor," said he, nodding at the brass plate.
+
+"Yes; he bought a practice as I did."
+
+"An old-established one?"
+
+"Just the same as mine. Both have been ever since the houses were
+built."
+
+"Ah! Then you got hold of the best of the two."
+
+"I think I did. But how do you know?"
+
+"By the steps, my boy. Yours are worn three inches deeper than his. But
+this gentleman in the cab is my client, Mr. Hall Pycroft. Allow me to
+introduce you to him. Whip your horse up, cabby, for we have only just
+time to catch our train."
+
+The man whom I found myself facing was a well built, fresh-complexioned
+young fellow, with a frank, honest face and a slight, crisp, yellow
+mustache. He wore a very shiny top hat and a neat suit of sober black,
+which made him look what he was--a smart young City man, of the class
+who have been labeled cockneys, but who give us our crack volunteer
+regiments, and who turn out more fine athletes and sportsmen than any
+body of men in these islands. His round, ruddy face was naturally full
+of cheeriness, but the corners of his mouth seemed to me to be pulled
+down in a half-comical distress. It was not, however, until we were
+all in a first-class carriage and well started upon our journey to
+Birmingham that I was able to learn what the trouble was which had
+driven him to Sherlock Holmes.
+
+"We have a clear run here of seventy minutes," Holmes remarked. "I
+want you, Mr. Hall Pycroft, to tell my friend your very interesting
+experience exactly as you have told it to me, or with more detail if
+possible. It will be of use to me to hear the succession of events
+again. It is a case, Watson, which may prove to have something in it, or
+may prove to have nothing, but which, at least, presents those unusual
+and outré features which are as dear to you as they are to me. Now, Mr.
+Pycroft, I shall not interrupt you again."
+
+Our young companion looked at me with a twinkle in his eye.
+
+"The worst of the story is," said he, "that I show myself up as such a
+confounded fool. Of course it may work out all right, and I don't see
+that I could have done otherwise; but if I have lost my crib and get
+nothing in exchange I shall feel what a soft Johnnie I have been. I'm
+not very good at telling a story, Dr. Watson, but it is like this with
+me:
+
+"I used to have a billet at Coxon & Woodhouse's, of Draper's Gardens,
+but they were let in early in the spring through the Venezuelan loan,
+as no doubt you remember, and came a nasty cropper. I had been with them
+five years, and old Coxon gave me a ripping good testimonial when
+the smash came, but of course we clerks were all turned adrift, the
+twenty-seven of us. I tried here and tried there, but there were lots of
+other chaps on the same lay as myself, and it was a perfect frost for a
+long time. I had been taking three pounds a week at Coxon's, and I had
+saved about seventy of them, but I soon worked my way through that and
+out at the other end. I was fairly at the end of my tether at last,
+and could hardly find the stamps to answer the advertisements or the
+envelopes to stick them to. I had worn out my boots paddling up office
+stairs, and I seemed just as far from getting a billet as ever.
+
+"At last I saw a vacancy at Mawson & Williams's, the great stock-broking
+firm in Lombard Street. I dare say E. C. Is not much in your line, but
+I can tell you that this is about the richest house in London.
+The advertisement was to be answered by letter only. I sent in my
+testimonial and application, but without the least hope of getting it.
+Back came an answer by return, saying that if I would appear next Monday
+I might take over my new duties at once, provided that my appearance was
+satisfactory. No one knows how these things are worked. Some people say
+that the manager just plunges his hand into the heap and takes the first
+that comes. Anyhow it was my innings that time, and I don't ever wish to
+feel better pleased. The screw was a pound a week rise, and the duties
+just about the same as at Coxon's.
+
+"And now I come to the queer part of the business. I was in diggings out
+Hampstead way, 17 Potter's Terrace. Well, I was sitting doing a smoke
+that very evening after I had been promised the appointment, when up
+came my landlady with a card which had 'Arthur Pinner, Financial Agent,'
+printed upon it. I had never heard the name before and could not imagine
+what he wanted with me; but, of course, I asked her to show him up. In
+he walked, a middle-sized, dark-haired, dark-eyed, black-bearded man,
+with a touch of the Sheeny about his nose. He had a brisk kind of way
+with him and spoke sharply, like a man who knew the value of time."
+
+"'Mr. Hall Pycroft, I believe?'" said he.
+
+"'Yes, sir,' I answered, pushing a chair towards him.
+
+"'Lately engaged at Coxon & Woodhouse's?'
+
+"'Yes, sir.'
+
+"'And now on the staff of Mawson's.'
+
+"'Quite so.'
+
+"'Well,' said he, 'the fact is that I have heard some really
+extraordinary stories about your financial ability. You remember Parker,
+who used to be Coxon's manager? He can never say enough about it.'
+
+"Of course I was pleased to hear this. I had always been pretty sharp in
+the office, but I had never dreamed that I was talked about in the City
+in this fashion.
+
+"'You have a good memory?' said he.
+
+"'Pretty fair,' I answered, modestly.
+
+"'Have you kept in touch with the market while you have been out of
+work?' he asked.
+
+"'Yes. I read the stock exchange list every morning.'
+
+"'Now that shows real application!' he cried. 'That is the way to
+prosper! You won't mind my testing you, will you? Let me see. How are
+Ayrshires?'
+
+"'A hundred and six and a quarter to a hundred and five and
+seven-eighths.'
+
+"'And New Zealand consolidated?'
+
+"'A hundred and four.
+
+"'And British Broken Hills?'
+
+"'Seven to seven-and-six.'
+
+"'Wonderful!' he cried, with his hands up. 'This quite fits in with all
+that I had heard. My boy, my boy, you are very much too good to be a
+clerk at Mawson's!'
+
+"This outburst rather astonished me, as you can think. 'Well,' said I,
+'other people don't think quite so much of me as you seem to do, Mr.
+Pinner. I had a hard enough fight to get this berth, and I am very glad
+to have it.'
+
+"'Pooh, man; you should soar above it. You are not in your true sphere.
+Now, I'll tell you how it stands with me. What I have to offer is little
+enough when measured by your ability, but when compared with Mawson's,
+it's light to dark. Let me see. When do you go to Mawson's?'
+
+"'On Monday.'
+
+"'Ha, ha! I think I would risk a little sporting flutter that you don't
+go there at all.'
+
+"'Not go to Mawson's?'
+
+"'No, sir. By that day you will be the business manager of the
+Franco-Midland Hardware Company, Limited, with a hundred and thirty-four
+branches in the towns and villages of France, not counting one in
+Brussels and one in San Remo.'
+
+"This took my breath away. 'I never heard of it,' said I.
+
+"'Very likely not. It has been kept very quiet, for the capital was all
+privately subscribed, and it's too good a thing to let the public
+into. My brother, Harry Pinner, is promoter, and joins the board after
+allotment as managing director. He knew I was in the swim down here, and
+asked me to pick up a good man cheap. A young, pushing man with plenty
+of snap about him. Parker spoke of you, and that brought me here
+to-night. We can only offer you a beggarly five hundred to start with.'
+
+"'Five hundred a year!' I shouted.
+
+"'Only that at the beginning; but you are to have an overriding
+commission of one per cent on all business done by your agents, and you
+may take my word for it that this will come to more than your salary.'
+
+"'But I know nothing about hardware.'
+
+"'Tut, my boy; you know about figures.'
+
+"My head buzzed, and I could hardly sit still in my chair. But suddenly
+a little chill of doubt came upon me.
+
+"'I must be frank with you,' said I. 'Mawson only gives me two hundred,
+but Mawson is safe. Now, really, I know so little about your company
+that--'
+
+"'Ah, smart, smart!' he cried, in a kind of ecstasy of delight. 'You
+are the very man for us. You are not to be talked over, and quite right,
+too. Now, here's a note for a hundred pounds, and if you think that we
+can do business you may just slip it into your pocket as an advance upon
+your salary.'
+
+"'That is very handsome,' said I. 'When should I take over my new
+duties?'
+
+"'Be in Birmingham to-morrow at one,' said he. 'I have a note in my
+pocket here which you will take to my brother. You will find him at
+126b Corporation Street, where the temporary offices of the company
+are situated. Of course he must confirm your engagement, but between
+ourselves it will be all right.'
+
+"'Really, I hardly know how to express my gratitude, Mr. Pinner,' said
+I.
+
+"'Not at all, my boy. You have only got your deserts. There are one or
+two small things--mere formalities--which I must arrange with you.
+You have a bit of paper beside you there. Kindly write upon it "I am
+perfectly willing to act as business manager to the Franco-Midland
+Hardware Company, Limited, at a minimum salary of L500."'
+
+"I did as he asked, and he put the paper in his pocket.
+
+"'There is one other detail,' said he. 'What do you intend to do about
+Mawson's?'
+
+"I had forgotten all about Mawson's in my joy. 'I'll write and resign,'
+said I.
+
+"'Precisely what I don't want you to do. I had a row over you with
+Mawson's manager. I had gone up to ask him about you, and he was very
+offensive; accused me of coaxing you away from the service of the firm,
+and that sort of thing. At last I fairly lost my temper. "If you want
+good men you should pay them a good price," said I.'
+
+"'He would rather have our small price than your big one,' said he.
+
+"'I'll lay you a fiver,' said I, 'that when he has my offer you'll never
+so much as hear from him again.'
+
+"'Done!' said he. 'We picked him out of the gutter, and he won't leave
+us so easily.' Those were his very words."
+
+"'The impudent scoundrel!' I cried. 'I've never so much as seen him in
+my life. Why should I consider him in any way? I shall certainly not
+write if you would rather I didn't.'
+
+"'Good! That's a promise,' said he, rising from his chair. 'Well, I'm
+delighted to have got so good a man for my brother. Here's your advance
+of a hundred pounds, and here is the letter. Make a note of the address,
+126b Corporation Street, and remember that one o'clock to-morrow is
+your appointment. Good-night; and may you have all the fortune that you
+deserve!'
+
+"That's just about all that passed between us, as near as I can
+remember. You can imagine, Dr. Watson, how pleased I was at such an
+extraordinary bit of good fortune. I sat up half the night hugging
+myself over it, and next day I was off to Birmingham in a train that
+would take me in plenty time for my appointment. I took my things to
+a hotel in New Street, and then I made my way to the address which had
+been given me.
+
+"It was a quarter of an hour before my time, but I thought that would
+make no difference. 126b was a passage between two large shops, which
+led to a winding stone stair, from which there were many flats, let as
+offices to companies or professional men. The names of the occupants
+were painted at the bottom on the wall, but there was no such name as
+the Franco-Midland Hardware Company, Limited. I stood for a few minutes
+with my heart in my boots, wondering whether the whole thing was an
+elaborate hoax or not, when up came a man and addressed me. He was very
+like the chap I had seen the night before, the same figure and voice,
+but he was clean shaven and his hair was lighter.
+
+"'Are you Mr. Hall Pycroft?' he asked.
+
+"'Yes,' said I.
+
+"'Oh! I was expecting you, but you are a trifle before your time. I had
+a note from my brother this morning in which he sang your praises very
+loudly.'
+
+"'I was just looking for the offices when you came.
+
+"'We have not got our name up yet, for we only secured these temporary
+premises last week. Come up with me, and we will talk the matter over.'
+
+"I followed him to the top of a very lofty stair, and there, right under
+the slates, were a couple of empty, dusty little rooms, uncarpeted and
+uncurtained, into which he led me. I had thought of a great office with
+shining tables and rows of clerks, such as I was used to, and I dare say
+I stared rather straight at the two deal chairs and one little table,
+which, with a ledger and a waste paper basket, made up the whole
+furniture.
+
+"'Don't be disheartened, Mr. Pycroft,' said my new acquaintance, seeing
+the length of my face. 'Rome was not built in a day, and we have lots of
+money at our backs, though we don't cut much dash yet in offices. Pray
+sit down, and let me have your letter.'
+
+"I gave it to him, and he read it over very carefully.
+
+"'You seem to have made a vast impression upon my brother Arthur,' said
+he; 'and I know that he is a pretty shrewd judge. He swears by London,
+you know; and I by Birmingham; but this time I shall follow his advice.
+Pray consider yourself definitely engaged."
+
+"'What are my duties?' I asked.
+
+"'You will eventually manage the great depot in Paris, which will pour
+a flood of English crockery into the shops of a hundred and thirty-four
+agents in France. The purchase will be completed in a week, and
+meanwhile you will remain in Birmingham and make yourself useful.'
+
+"'How?'
+
+"For answer, he took a big red book out of a drawer.
+
+"'This is a directory of Paris,' said he, 'with the trades after the
+names of the people. I want you to take it home with you, and to mark
+off all the hardware sellers, with their addresses. It would be of the
+greatest use to me to have them.'
+
+"'Surely there are classified lists?' I suggested.
+
+"'Not reliable ones. Their system is different from ours. Stick at it,
+and let me have the lists by Monday, at twelve. Good-day, Mr. Pycroft.
+If you continue to show zeal and intelligence you will find the company
+a good master.'
+
+"I went back to the hotel with the big book under my arm, and with very
+conflicting feelings in my breast. On the one hand, I was definitely
+engaged and had a hundred pounds in my pocket; on the other, the look
+of the offices, the absence of name on the wall, and other of the points
+which would strike a business man had left a bad impression as to the
+position of my employers. However, come what might, I had my money, so I
+settled down to my task. All Sunday I was kept hard at work, and yet by
+Monday I had only got as far as H. I went round to my employer, found
+him in the same dismantled kind of room, and was told to keep at
+it until Wednesday, and then come again. On Wednesday it was still
+unfinished, so I hammered away until Friday--that is, yesterday. Then I
+brought it round to Mr. Harry Pinner.
+
+"'Thank you very much,' said he; 'I fear that I underrated the
+difficulty of the task. This list will be of very material assistance to
+me.'
+
+"'It took some time,' said I.
+
+"'And now,' said he, 'I want you to make a list of the furniture shops,
+for they all sell crockery.'
+
+"'Very good.'
+
+"'And you can come up to-morrow evening, at seven, and let me know how
+you are getting on. Don't overwork yourself. A couple of hours at Day's
+Music Hall in the evening would do you no harm after your labors.' He
+laughed as he spoke, and I saw with a thrill that his second tooth upon
+the left-hand side had been very badly stuffed with gold."
+
+
+Sherlock Holmes rubbed his hands with delight, and I stared with
+astonishment at our client.
+
+"You may well look surprised, Dr. Watson; but it is this way," said he:
+"When I was speaking to the other chap in London, at the time that he
+laughed at my not going to Mawson's, I happened to notice that his tooth
+was stuffed in this very identical fashion. The glint of the gold in
+each case caught my eye, you see. When I put that with the voice and
+figure being the same, and only those things altered which might be
+changed by a razor or a wig, I could not doubt that it was the same man.
+Of course you expect two brothers to be alike, but not that they should
+have the same tooth stuffed in the same way. He bowed me out, and I
+found myself in the street, hardly knowing whether I was on my head or
+my heels. Back I went to my hotel, put my head in a basin of cold water,
+and tried to think it out. Why had he sent me from London to Birmingham?
+Why had he got there before me? And why had he written a letter from
+himself to himself? It was altogether too much for me, and I could make
+no sense of it. And then suddenly it struck me that what was dark to me
+might be very light to Mr. Sherlock Holmes. I had just time to get up to
+town by the night train to see him this morning, and to bring you both
+back with me to Birmingham."
+
+There was a pause after the stock-broker's clerk had concluded his
+surprising experience. Then Sherlock Holmes cocked his eye at me,
+leaning back on the cushions with a pleased and yet critical face, like
+a connoisseur who has just taken his first sip of a comet vintage.
+
+"Rather fine, Watson, is it not?" said he. "There are points in it which
+please me. I think that you will agree with me that an interview with
+Mr. Arthur Harry Pinner in the temporary offices of the Franco-Midland
+Hardware Company, Limited, would be a rather interesting experience for
+both of us."
+
+"But how can we do it?" I asked.
+
+"Oh, easily enough," said Hall Pycroft, cheerily. "You are two friends
+of mine who are in want of a billet, and what could be more natural than
+that I should bring you both round to the managing director?"
+
+"Quite so, of course," said Holmes. "I should like to have a look at
+the gentleman, and see if I can make anything of his little game.
+What qualities have you, my friend, which would make your services
+so valuable? or is it possible that--" He began biting his nails and
+staring blankly out of the window, and we hardly drew another word from
+him until we were in New Street.
+
+At seven o'clock that evening we were walking, the three of us, down
+Corporation Street to the company's offices.
+
+"It is no use our being at all before our time," said our client. "He
+only comes there to see me, apparently, for the place is deserted up to
+the very hour he names."
+
+"That is suggestive," remarked Holmes.
+
+"By Jove, I told you so!" cried the clerk. "That's he walking ahead of
+us there."
+
+He pointed to a smallish, dark, well-dressed man who was bustling along
+the other side of the road. As we watched him he looked across at a boy
+who was bawling out the latest edition of the evening paper, and running
+over among the cabs and busses, he bought one from him. Then, clutching
+it in his hand, he vanished through a door-way.
+
+"There he goes!" cried Hall Pycroft. "These are the company's offices
+into which he has gone. Come with me, and I'll fix it up as easily as
+possible."
+
+Following his lead, we ascended five stories, until we found ourselves
+outside a half-opened door, at which our client tapped. A voice within
+bade us enter, and we entered a bare, unfurnished room such as Hall
+Pycroft had described. At the single table sat the man whom we had seen
+in the street, with his evening paper spread out in front of him, and as
+he looked up at us it seemed to me that I had never looked upon a face
+which bore such marks of grief, and of something beyond grief--of a
+horror such as comes to few men in a lifetime. His brow glistened with
+perspiration, his cheeks were of the dull, dead white of a fish's belly,
+and his eyes were wild and staring. He looked at his clerk as though he
+failed to recognize him, and I could see by the astonishment depicted
+upon our conductor's face that this was by no means the usual appearance
+of his employer.
+
+"You look ill, Mr. Pinner!" he exclaimed.
+
+"Yes, I am not very well," answered the other, making obvious efforts
+to pull himself together, and licking his dry lips before he spoke. "Who
+are these gentlemen whom you have brought with you?"
+
+"One is Mr. Harris, of Bermondsey, and the other is Mr. Price, of this
+town," said our clerk, glibly. "They are friends of mine and gentlemen
+of experience, but they have been out of a place for some little time,
+and they hoped that perhaps you might find an opening for them in the
+company's employment."
+
+"Very possibly! Very possibly!" cried Mr. Pinner with a ghastly smile.
+"Yes, I have no doubt that we shall be able to do something for you.
+What is your particular line, Mr. Harris?"
+
+"I am an accountant," said Holmes.
+
+"Ah yes, we shall want something of the sort. And you, Mr. Price?"
+
+"A clerk," said I.
+
+"I have every hope that the company may accommodate you. I will let you
+know about it as soon as we come to any conclusion. And now I beg that
+you will go. For God's sake leave me to myself!"
+
+These last words were shot out of him, as though the constraint which
+he was evidently setting upon himself had suddenly and utterly burst
+asunder. Holmes and I glanced at each other, and Hall Pycroft took a
+step towards the table.
+
+"You forget, Mr. Pinner, that I am here by appointment to receive some
+directions from you," said he.
+
+"Certainly, Mr. Pycroft, certainly," the other resumed in a calmer tone.
+"You may wait here a moment; and there is no reason why your friends
+should not wait with you. I will be entirely at your service in three
+minutes, if I might trespass upon your patience so far." He rose with a
+very courteous air, and, bowing to us, he passed out through a door at
+the farther end of the room, which he closed behind him.
+
+"What now?" whispered Holmes. "Is he giving us the slip?"
+
+"Impossible," answered Pycroft.
+
+"Why so?"
+
+"That door leads into an inner room."
+
+"There is no exit?"
+
+"None."
+
+"Is it furnished?"
+
+"It was empty yesterday."
+
+"Then what on earth can he be doing? There is something which I don't
+understand in this manner. If ever a man was three parts mad with
+terror, that man's name is Pinner. What can have put the shivers on
+him?"
+
+"He suspects that we are detectives," I suggested.
+
+"That's it," cried Pycroft.
+
+Holmes shook his head. "He did not turn pale. He was pale when we
+entered the room," said he. "It is just possible that--"
+
+His words were interrupted by a sharp rat-tat from the direction of the
+inner door.
+
+"What the deuce is he knocking at his own door for?" cried the clerk.
+
+Again and much louder came the rat-tat-tat. We all gazed expectantly at
+the closed door. Glancing at Holmes, I saw his face turn rigid, and he
+leaned forward in intense excitement. Then suddenly came a low guggling,
+gargling sound, and a brisk drumming upon woodwork. Holmes sprang
+frantically across the room and pushed at the door. It was fastened on
+the inner side. Following his example, we threw ourselves upon it with
+all our weight. One hinge snapped, then the other, and down came the
+door with a crash. Rushing over it, we found ourselves in the inner
+room. It was empty.
+
+But it was only for a moment that we were at fault. At one corner, the
+corner nearest the room which we had left, there was a second door.
+Holmes sprang to it and pulled it open. A coat and waistcoat were lying
+on the floor, and from a hook behind the door, with his own braces
+round his neck, was hanging the managing director of the Franco-Midland
+Hardware Company. His knees were drawn up, his head hung at a dreadful
+angle to his body, and the clatter of his heels against the door made
+the noise which had broken in upon our conversation. In an instant I
+had caught him round the waist, and held him up while Holmes and Pycroft
+untied the elastic bands which had disappeared between the livid creases
+of skin. Then we carried him into the other room, where he lay with
+a clay-colored face, puffing his purple lips in and out with every
+breath--a dreadful wreck of all that he had been but five minutes
+before.
+
+"What do you think of him, Watson?" asked Holmes.
+
+I stooped over him and examined him. His pulse was feeble and
+intermittent, but his breathing grew longer, and there was a little
+shivering of his eyelids, which showed a thin white slit of ball
+beneath.
+
+"It has been touch and go with him," said I, "but he'll live now. Just
+open that window, and hand me the water carafe." I undid his collar,
+poured the cold water over his face, and raised and sank his arms until
+he drew a long, natural breath. "It's only a question of time now," said
+I, as I turned away from him.
+
+Holmes stood by the table, with his hands deep in his trouser's pockets
+and his chin upon his breast.
+
+"I suppose we ought to call the police in now," said he. "And yet I
+confess that I'd like to give them a complete case when they come."
+
+"It's a blessed mystery to me," cried Pycroft, scratching his head.
+"Whatever they wanted to bring me all the way up here for, and then--"
+
+"Pooh! All that is clear enough," said Holmes impatiently. "It is this
+last sudden move."
+
+"You understand the rest, then?"
+
+"I think that it is fairly obvious. What do you say, Watson?"
+
+I shrugged my shoulders. "I must confess that I am out of my depths,"
+said I.
+
+"Oh surely if you consider the events at first they can only point to
+one conclusion."
+
+"What do you make of them?"
+
+"Well, the whole thing hinges upon two points. The first is the making
+of Pycroft write a declaration by which he entered the service of this
+preposterous company. Do you not see how very suggestive that is?"
+
+"I am afraid I miss the point."
+
+"Well, why did they want him to do it? Not as a business matter, for
+these arrangements are usually verbal, and there was no earthly business
+reason why this should be an exception. Don't you see, my young friend,
+that they were very anxious to obtain a specimen of your handwriting,
+and had no other way of doing it?"
+
+"And why?"
+
+"Quite so. Why? When we answer that we have made some progress with our
+little problem. Why? There can be only one adequate reason. Some one
+wanted to learn to imitate your writing, and had to procure a specimen
+of it first. And now if we pass on to the second point we find that each
+throws light upon the other. That point is the request made by Pinner
+that you should not resign your place, but should leave the manager of
+this important business in the full expectation that a Mr. Hall Pycroft,
+whom he had never seen, was about to enter the office upon the Monday
+morning."
+
+"My God!" cried our client, "what a blind beetle I have been!"
+
+"Now you see the point about the handwriting. Suppose that some one
+turned up in your place who wrote a completely different hand from that
+in which you had applied for the vacancy, of course the game would have
+been up. But in the interval the rogue had learned to imitate you,
+and his position was therefore secure, as I presume that nobody in the
+office had ever set eyes upon you."
+
+"Not a soul," groaned Hall Pycroft.
+
+"Very good. Of course it was of the utmost importance to prevent you
+from thinking better of it, and also to keep you from coming into
+contact with any one who might tell you that your double was at work
+in Mawson's office. Therefore they gave you a handsome advance on your
+salary, and ran you off to the Midlands, where they gave you enough work
+to do to prevent your going to London, where you might have burst their
+little game up. That is all plain enough."
+
+"But why should this man pretend to be his own brother?"
+
+"Well, that is pretty clear also. There are evidently only two of them
+in it. The other is impersonating you at the office. This one acted
+as your engager, and then found that he could not find you an employer
+without admitting a third person into his plot. That he was most
+unwilling to do. He changed his appearance as far as he could, and
+trusted that the likeness, which you could not fail to observe, would be
+put down to a family resemblance. But for the happy chance of the gold
+stuffing, your suspicions would probably never have been aroused."
+
+Hall Pycroft shook his clinched hands in the air. "Good Lord!" he cried,
+"while I have been fooled in this way, what has this other Hall Pycroft
+been doing at Mawson's? What should we do, Mr. Holmes? Tell me what to
+do."
+
+"We must wire to Mawson's."
+
+"They shut at twelve on Saturdays."
+
+"Never mind. There may be some door-keeper or attendant--"
+
+"Ah yes, they keep a permanent guard there on account of the value of
+the securities that they hold. I remember hearing it talked of in the
+City."
+
+"Very good; we shall wire to him, and see if all is well, and if a clerk
+of your name is working there. That is clear enough; but what is not so
+clear is why at sight of us one of the rogues should instantly walk out
+of the room and hang himself."
+
+"The paper!" croaked a voice behind us. The man was sitting up, blanched
+and ghastly, with returning reason in his eyes, and hands which rubbed
+nervously at the broad red band which still encircled his throat.
+
+"The paper! Of course!" yelled Holmes, in a paroxysm of excitement.
+"Idiot that I was! I thought so much of our visit that the paper never
+entered my head for an instant. To be sure, the secret must be there."
+He flattened it out upon the table, and a cry of triumph burst from his
+lips. "Look at this, Watson," he cried. "It is a London paper, an early
+edition of the Evening Standard. Here is what we want. Look at the
+headlines: 'Crime in the City. Murder at Mawson & Williams's. Gigantic
+attempted Robbery. Capture of the Criminal.' Here, Watson, we are all
+equally anxious to hear it, so kindly read it aloud to us."
+
+It appeared from its position in the paper to have been the one event of
+importance in town, and the account of it ran in this way:
+
+"A desperate attempt at robbery, culminating in the death of one man and
+the capture of the criminal, occurred this afternoon in the City. For
+some time back Mawson & Williams, the famous financial house, have been
+the guardians of securities which amount in the aggregate to a sum of
+considerably over a million sterling. So conscious was the manager of
+the responsibility which devolved upon him in consequence of the great
+interests at stake that safes of the very latest construction have
+been employed, and an armed watchman has been left day and night in the
+building. It appears that last week a new clerk named Hall Pycroft was
+engaged by the firm. This person appears to have been none other that
+Beddington, the famous forger and cracksman, who, with his brother, had
+only recently emerged from a five years' spell of penal servitude. By
+some means, which are not yet clear, he succeeded in winning, under a
+false name, this official position in the office, which he utilized in
+order to obtain moulding of various locks, and a thorough knowledge of
+the position of the strong room and the safes.
+
+"It is customary at Mawson's for the clerks to leave at midday on
+Saturday. Sergeant Tuson, of the City Police, was somewhat surprised,
+therefore to see a gentleman with a carpet bag come down the steps at
+twenty minutes past one. His suspicions being aroused, the sergeant
+followed the man, and with the aid of Constable Pollock succeeded, after
+a most desperate resistance, in arresting him. It was at once clear
+that a daring and gigantic robbery had been committed. Nearly a hundred
+thousand pounds' worth of American railway bonds, with a large amount
+of scrip in mines and other companies, was discovered in the bag. On
+examining the premises the body of the unfortunate watchman was found
+doubled up and thrust into the largest of the safes, where it would not
+have been discovered until Monday morning had it not been for the prompt
+action of Sergeant Tuson. The man's skull had been shattered by a
+blow from a poker delivered from behind. There could be no doubt
+that Beddington had obtained entrance by pretending that he had left
+something behind him, and having murdered the watchman, rapidly rifled
+the large safe, and then made off with his booty. His brother, who
+usually works with him, has not appeared in this job as far as can
+at present be ascertained, although the police are making energetic
+inquiries as to his whereabouts."
+
+"Well, we may save the police some little trouble in that direction,"
+said Holmes, glancing at the haggard figure huddled up by the window.
+"Human nature is a strange mixture, Watson. You see that even a villain
+and murderer can inspire such affection that his brother turns to
+suicide when he learns that his neck is forfeited. However, we have
+no choice as to our action. The doctor and I will remain on guard, Mr.
+Pycroft, if you will have the kindness to step out for the police."
+
+
+
+
+Adventure IV. The "_Gloria Scott_"
+
+
+"I have some papers here," said my friend Sherlock Holmes, as we sat
+one winter's night on either side of the fire, "which I really think,
+Watson, that it would be worth your while to glance over. These are the
+documents in the extraordinary case of the Gloria Scott, and this is the
+message which struck Justice of the Peace Trevor dead with horror when
+he read it."
+
+He had picked from a drawer a little tarnished cylinder, and, undoing
+the tape, he handed me a short note scrawled upon a half-sheet of
+slate-gray paper.
+
+"The supply of game for London is going steadily up," it ran.
+"Head-keeper Hudson, we believe, has been now told to receive all orders
+for fly-paper and for preservation of your hen-pheasant's life."
+
+As I glanced up from reading this enigmatical message, I saw Holmes
+chuckling at the expression upon my face.
+
+"You look a little bewildered," said he.
+
+"I cannot see how such a message as this could inspire horror. It seems
+to me to be rather grotesque than otherwise."
+
+"Very likely. Yet the fact remains that the reader, who was a fine,
+robust old man, was knocked clean down by it as if it had been the butt
+end of a pistol."
+
+"You arouse my curiosity," said I. "But why did you say just now that
+there were very particular reasons why I should study this case?"
+
+"Because it was the first in which I was ever engaged."
+
+I had often endeavored to elicit from my companion what had first turned
+his mind in the direction of criminal research, but had never caught him
+before in a communicative humor. Now he sat forward in this arm-chair
+and spread out the documents upon his knees. Then he lit his pipe and
+sat for some time smoking and turning them over.
+
+"You never heard me talk of Victor Trevor?" he asked. "He was the only
+friend I made during the two years I was at college. I was never a very
+sociable fellow, Watson, always rather fond of moping in my rooms and
+working out my own little methods of thought, so that I never mixed
+much with the men of my year. Bar fencing and boxing I had few athletic
+tastes, and then my line of study was quite distinct from that of the
+other fellows, so that we had no points of contact at all. Trevor was
+the only man I knew, and that only through the accident of his bull
+terrier freezing on to my ankle one morning as I went down to chapel.
+
+"It was a prosaic way of forming a friendship, but it was effective.
+I was laid by the heels for ten days, but Trevor used to come in to
+inquire after me. At first it was only a minute's chat, but soon his
+visits lengthened, and before the end of the term we were close friends.
+He was a hearty, full-blooded fellow, full of spirits and energy,
+the very opposite to me in most respects, but we had some subjects
+in common, and it was a bond of union when I found that he was as
+friendless as I. Finally, he invited me down to his father's place at
+Donnithorpe, in Norfolk, and I accepted his hospitality for a month of
+the long vacation.
+
+"Old Trevor was evidently a man of some wealth and consideration, a
+J.P., and a landed proprietor. Donnithorpe is a little hamlet just to
+the north of Langmere, in the country of the Broads. The house was
+an old-fashioned, wide-spread, oak-beamed brick building, with a fine
+lime-lined avenue leading up to it. There was excellent wild-duck
+shooting in the fens, remarkably good fishing, a small but select
+library, taken over, as I understood, from a former occupant, and a
+tolerable cook, so that he would be a fastidious man who could not put
+in a pleasant month there.
+
+"Trevor senior was a widower, and my friend his only son.
+
+"There had been a daughter, I heard, but she had died of diphtheria
+while on a visit to Birmingham. The father interested me extremely.
+He was a man of little culture, but with a considerable amount of rude
+strength, both physically and mentally. He knew hardly any books, but
+he had traveled far, had seen much of the world. And had remembered
+all that he had learned. In person he was a thick-set, burly man with
+a shock of grizzled hair, a brown, weather-beaten face, and blue eyes
+which were keen to the verge of fierceness. Yet he had a reputation for
+kindness and charity on the country-side, and was noted for the leniency
+of his sentences from the bench.
+
+"One evening, shortly after my arrival, we were sitting over a glass of
+port after dinner, when young Trevor began to talk about those habits
+of observation and inference which I had already formed into a system,
+although I had not yet appreciated the part which they were to play in
+my life. The old man evidently thought that his son was exaggerating in
+his description of one or two trivial feats which I had performed.
+
+"'Come, now, Mr. Holmes,' said he, laughing good-humoredly. 'I'm an
+excellent subject, if you can deduce anything from me.'
+
+"'I fear there is not very much,' I answered; 'I might suggest that
+you have gone about in fear of some personal attack within the last
+twelvemonth.'
+
+"The laugh faded from his lips, and he stared at me in great surprise.
+
+"'Well, that's true enough,' said he. 'You know, Victor,' turning to his
+son, 'when we broke up that poaching gang they swore to knife us, and
+Sir Edward Holly has actually been attacked. I've always been on my
+guard since then, though I have no idea how you know it.'
+
+"'You have a very handsome stick,' I answered. 'By the inscription I
+observed that you had not had it more than a year. But you have taken
+some pains to bore the head of it and pour melted lead into the hole so
+as to make it a formidable weapon. I argued that you would not take such
+precautions unless you had some danger to fear.'
+
+"'Anything else?' he asked, smiling.
+
+"'You have boxed a good deal in your youth.'
+
+"'Right again. How did you know it? Is my nose knocked a little out of
+the straight?'
+
+"'No,' said I. 'It is your ears. They have the peculiar flattening and
+thickening which marks the boxing man.'
+
+"'Anything else?'
+
+"'You have done a good deal of digging by your callosities.'
+
+"'Made all my money at the gold fields.'
+
+"'You have been in New Zealand.'
+
+"'Right again.'
+
+"'You have visited Japan.'
+
+"'Quite true.'
+
+"'And you have been most intimately associated with some one whose
+initials were J. A., and whom you afterwards were eager to entirely
+forget.'
+
+"Mr. Trevor stood slowly up, fixed his large blue eyes upon me with a
+strange wild stare, and then pitched forward, with his face among the
+nutshells which strewed the cloth, in a dead faint.
+
+"You can imagine, Watson, how shocked both his son and I were. His
+attack did not last long, however, for when we undid his collar, and
+sprinkled the water from one of the finger-glasses over his face, he
+gave a gasp or two and sat up.
+
+"'Ah, boys,' said he, forcing a smile, 'I hope I haven't frightened you.
+Strong as I look, there is a weak place in my heart, and it does not
+take much to knock me over. I don't know how you manage this, Mr.
+Holmes, but it seems to me that all the detectives of fact and of fancy
+would be children in your hands. That's your line of life, sir, and you
+may take the word of a man who has seen something of the world.'
+
+"And that recommendation, with the exaggerated estimate of my ability
+with which he prefaced it, was, if you will believe me, Watson, the very
+first thing which ever made me feel that a profession might be made
+out of what had up to that time been the merest hobby. At the moment,
+however, I was too much concerned at the sudden illness of my host to
+think of anything else.
+
+"'I hope that I have said nothing to pain you?' said I.
+
+"'Well, you certainly touched upon rather a tender point. Might I ask
+how you know, and how much you know?' He spoke now in a half-jesting
+fashion, but a look of terror still lurked at the back of his eyes.
+
+"'It is simplicity itself,' said I. 'When you bared your arm to draw
+that fish into the boat I saw that J. A. Had been tattooed in the bend
+of the elbow. The letters were still legible, but it was perfectly clear
+from their blurred appearance, and from the staining of the skin round
+them, that efforts had been made to obliterate them. It was obvious,
+then, that those initials had once been very familiar to you, and that
+you had afterwards wished to forget them.'
+
+"What an eye you have!" he cried, with a sigh of relief. 'It is just as
+you say. But we won't talk of it. Of all ghosts the ghosts of our old
+lovers are the worst. Come into the billiard-room and have a quiet
+cigar.'
+
+
+"From that day, amid all his cordiality, there was always a touch of
+suspicion in Mr. Trevor's manner towards me. Even his son remarked it.
+'You've given the governor such a turn,' said he, 'that he'll never be
+sure again of what you know and what you don't know.' He did not mean
+to show it, I am sure, but it was so strongly in his mind that it peeped
+out at every action. At last I became so convinced that I was causing
+him uneasiness that I drew my visit to a close. On the very day,
+however, before I left, and incident occurred which proved in the sequel
+to be of importance.
+
+"We were sitting out upon the lawn on garden chairs, the three of us,
+basking in the sun and admiring the view across the Broads, when a maid
+came out to say that there was a man at the door who wanted to see Mr.
+Trevor.
+
+"'What is his name?' asked my host.
+
+"'He would not give any.'
+
+"'What does he want, then?'
+
+"'He says that you know him, and that he only wants a moment's
+conversation.'
+
+"'Show him round here.' An instant afterwards there appeared a little
+wizened fellow with a cringing manner and a shambling style of
+walking. He wore an open jacket, with a splotch of tar on the sleeve,
+a red-and-black check shirt, dungaree trousers, and heavy boots badly
+worn. His face was thin and brown and crafty, with a perpetual smile
+upon it, which showed an irregular line of yellow teeth, and his
+crinkled hands were half closed in a way that is distinctive of sailors.
+As he came slouching across the lawn I heard Mr. Trevor make a sort of
+hiccoughing noise in his throat, and jumping out of his chair, he ran
+into the house. He was back in a moment, and I smelt a strong reek of
+brandy as he passed me.
+
+"'Well, my man,' said he. 'What can I do for you?'
+
+"The sailor stood looking at him with puckered eyes, and with the same
+loose-lipped smile upon his face.
+
+"'You don't know me?' he asked.
+
+"'Why, dear me, it is surely Hudson,' said Mr. Trevor in a tone of
+surprise.
+
+"'Hudson it is, sir,' said the seaman. 'Why, it's thirty year and more
+since I saw you last. Here you are in your house, and me still picking
+my salt meat out of the harness cask.'
+
+"'Tut, you will find that I have not forgotten old times,' cried Mr.
+Trevor, and, walking towards the sailor, he said something in a low
+voice. 'Go into the kitchen,' he continued out loud, 'and you will get
+food and drink. I have no doubt that I shall find you a situation.'
+
+"'Thank you, sir,' said the seaman, touching his fore-lock. 'I'm just
+off a two-yearer in an eight-knot tramp, short-handed at that, and I
+wants a rest. I thought I'd get it either with Mr. Beddoes or with you.'
+
+"'Ah!' cried Trevor. 'You know where Mr. Beddoes is?'
+
+"'Bless you, sir, I know where all my old friends are,' said the
+fellow with a sinister smile, and he slouched off after the maid to the
+kitchen. Mr. Trevor mumbled something to us about having been shipmate
+with the man when he was going back to the diggings, and then, leaving
+us on the lawn, he went indoors. An hour later, when we entered the
+house, we found him stretched dead drunk upon the dining-room sofa. The
+whole incident left a most ugly impression upon my mind, and I was
+not sorry next day to leave Donnithorpe behind me, for I felt that my
+presence must be a source of embarrassment to my friend.
+
+"All this occurred during the first month of the long vacation. I went
+up to my London rooms, where I spent seven weeks working out a few
+experiments in organic chemistry. One day, however, when the autumn was
+far advanced and the vacation drawing to a close, I received a telegram
+from my friend imploring me to return to Donnithorpe, and saying that
+he was in great need of my advice and assistance. Of course I dropped
+everything and set out for the North once more.
+
+"He met me with the dog-cart at the station, and I saw at a glance that
+the last two months had been very trying ones for him. He had grown thin
+and careworn, and had lost the loud, cheery manner for which he had been
+remarkable.
+
+"'The governor is dying,' were the first words he said.
+
+"'Impossible!' I cried. 'What is the matter?'
+
+"'Apoplexy. Nervous shock, He's been on the verge all day. I doubt if we
+shall find him alive.'
+
+"I was, as you may think, Watson, horrified at this unexpected news.
+
+"'What has caused it?' I asked.
+
+"'Ah, that is the point. Jump in and we can talk it over while we drive.
+You remember that fellow who came upon the evening before you left us?'
+
+"'Perfectly.'
+
+"'Do you know who it was that we let into the house that day?'
+
+"'I have no idea.'
+
+"'It was the devil, Holmes,' he cried.
+
+"I stared at him in astonishment.
+
+"'Yes, it was the devil himself. We have not had a peaceful hour
+since--not one. The governor has never held up his head from that
+evening, and now the life has been crushed out of him and his heart
+broken, all through this accursed Hudson.'
+
+"'What power had he, then?'
+
+"'Ah, that is what I would give so much to know. The kindly, charitable,
+good old governor--how could he have fallen into the clutches of such a
+ruffian! But I am so glad that you have come, Holmes. I trust very much
+to your judgment and discretion, and I know that you will advise me for
+the best.'
+
+"We were dashing along the smooth white country road, with the long
+stretch of the Broads in front of us glimmering in the red light of the
+setting sun. From a grove upon our left I could already see the high
+chimneys and the flag-staff which marked the squire's dwelling.
+
+"'My father made the fellow gardener,' said my companion, 'and then, as
+that did not satisfy him, he was promoted to be butler. The house seemed
+to be at his mercy, and he wandered about and did what he chose in it.
+The maids complained of his drunken habits and his vile language. The
+dad raised their wages all round to recompense them for the annoyance.
+The fellow would take the boat and my father's best gun and treat
+himself to little shooting trips. And all this with such a sneering,
+leering, insolent face that I would have knocked him down twenty times
+over if he had been a man of my own age. I tell you, Holmes, I have
+had to keep a tight hold upon myself all this time; and now I am asking
+myself whether, if I had let myself go a little more, I might not have
+been a wiser man.
+
+"'Well, matters went from bad to worse with us, and this animal Hudson
+became more and more intrusive, until at last, on making some insolent
+reply to my father in my presence one day, I took him by the shoulders
+and turned him out of the room. He slunk away with a livid face and two
+venomous eyes which uttered more threats than his tongue could do. I
+don't know what passed between the poor dad and him after that, but the
+dad came to me next day and asked me whether I would mind apologizing to
+Hudson. I refused, as you can imagine, and asked my father how he
+could allow such a wretch to take such liberties with himself and his
+household.
+
+"'"Ah, my boy," said he, "it is all very well to talk, but you don't
+know how I am placed. But you shall know, Victor. I'll see that you
+shall know, come what may. You wouldn't believe harm of your poor old
+father, would you, lad?" He was very much moved, and shut himself up
+in the study all day, where I could see through the window that he was
+writing busily.
+
+"'That evening there came what seemed to me to be a grand release,
+for Hudson told us that he was going to leave us. He walked into the
+dining-room as we sat after dinner, and announced his intention in the
+thick voice of a half-drunken man.
+
+"'"I've had enough of Norfolk," said he. "I'll run down to Mr. Beddoes
+in Hampshire. He'll be as glad to see me as you were, I dare say."
+
+"'"You're not going away in an unkind spirit, Hudson, I hope," said my
+father, with a tameness which made my blood boil.
+
+"'"I've not had my 'pology," said he sulkily, glancing in my direction.
+
+"'"Victor, you will acknowledge that you have used this worthy fellow
+rather roughly," said the dad, turning to me.
+
+"'"On the contrary, I think that we have both shown extraordinary
+patience towards him," I answered.
+
+"'"Oh, you do, do you?" he snarls. "Very good, mate. We'll see about
+that!"
+
+"'He slouched out of the room, and half an hour afterwards left the
+house, leaving my father in a state of pitiable nervousness. Night after
+night I heard him pacing his room, and it was just as he was recovering
+his confidence that the blow did at last fall.'
+
+"'And how?' I asked eagerly.
+
+"'In a most extraordinary fashion. A letter arrived for my father
+yesterday evening, bearing the Fordingbridge post-mark. My father read
+it, clapped both his hands to his head, and began running round the room
+in little circles like a man who has been driven out of his senses. When
+I at last drew him down on to the sofa, his mouth and eyelids were all
+puckered on one side, and I saw that he had a stroke. Dr. Fordham came
+over at once. We put him to bed; but the paralysis has spread, he has
+shown no sign of returning consciousness, and I think that we shall
+hardly find him alive.'
+
+"'You horrify me, Trevor!' I cried. 'What then could have been in this
+letter to cause so dreadful a result?'
+
+"'Nothing. There lies the inexplicable part of it. The message was
+absurd and trivial. Ah, my God, it is as I feared!'
+
+"As he spoke we came round the curve of the avenue, and saw in the
+fading light that every blind in the house had been drawn down. As
+we dashed up to the door, my friend's face convulsed with grief, a
+gentleman in black emerged from it.
+
+"'When did it happen, doctor?' asked Trevor.
+
+"'Almost immediately after you left.'
+
+"'Did he recover consciousness?'
+
+"'For an instant before the end.'
+
+"'Any message for me.'
+
+"'Only that the papers were in the back drawer of the Japanese cabinet.'
+
+"My friend ascended with the doctor to the chamber of death, while I
+remained in the study, turning the whole matter over and over in my
+head, and feeling as sombre as ever I had done in my life. What was the
+past of this Trevor, pugilist, traveler, and gold-digger, and how had he
+placed himself in the power of this acid-faced seaman? Why, too, should
+he faint at an allusion to the half-effaced initials upon his arm, and
+die of fright when he had a letter from Fordingham? Then I remembered
+that Fordingham was in Hampshire, and that this Mr. Beddoes, whom the
+seaman had gone to visit and presumably to blackmail, had also been
+mentioned as living in Hampshire. The letter, then, might either come
+from Hudson, the seaman, saying that he had betrayed the guilty secret
+which appeared to exist, or it might come from Beddoes, warning an old
+confederate that such a betrayal was imminent. So far it seemed clear
+enough. But then how could this letter be trivial and grotesque, as
+describe by the son? He must have misread it. If so, it must have been
+one of those ingenious secret codes which mean one thing while they seem
+to mean another. I must see this letter. If there were a hidden meaning
+in it, I was confident that I could pluck it forth. For an hour I sat
+pondering over it in the gloom, until at last a weeping maid brought in
+a lamp, and close at her heels came my friend Trevor, pale but composed,
+with these very papers which lie upon my knee held in his grasp. He sat
+down opposite to me, drew the lamp to the edge of the table, and handed
+me a short note scribbled, as you see, upon a single sheet of gray
+paper. 'The supply of game for London is going steadily up,' it ran.
+'Head-keeper Hudson, we believe, has been now told to receive all orders
+for fly-paper and for preservation of your hen-pheasant's life.'
+
+"I dare say my face looked as bewildered as yours did just now when
+first I read this message. Then I reread it very carefully. It was
+evidently as I had thought, and some secret meaning must lie buried
+in this strange combination of words. Or could it be that there was
+a prearranged significance to such phrases as 'fly-paper' and
+'hen-pheasant'? Such a meaning would be arbitrary and could not be
+deduced in any way. And yet I was loath to believe that this was the
+case, and the presence of the word Hudson seemed to show that the
+subject of the message was as I had guessed, and that it was from
+Beddoes rather than the sailor. I tried it backwards, but the
+combination 'life pheasant's hen' was not encouraging. Then I tried
+alternate words, but neither 'the of for' nor 'supply game London'
+promised to throw any light upon it.
+
+"And then in an instant the key of the riddle was in my hands, and I saw
+that every third word, beginning with the first, would give a message
+which might well drive old Trevor to despair.
+
+"It was short and terse, the warning, as I now read it to my companion:
+
+"'The game is up. Hudson has told all. Fly for your life.'
+
+"Victor Trevor sank his face into his shaking hands. 'It must be that,
+I suppose,' said he. "This is worse than death, for it means disgrace
+as well. But what is the meaning of these "head-keepers" and
+"hen-pheasants"?'
+
+"'It means nothing to the message, but it might mean a good deal to us
+if we had no other means of discovering the sender. You see that he has
+begun by writing "The...game...is," and so on. Afterwards he had, to
+fulfill the prearranged cipher, to fill in any two words in each space.
+He would naturally use the first words which came to his mind, and
+if there were so many which referred to sport among them, you may
+be tolerably sure that he is either an ardent shot or interested in
+breeding. Do you know anything of this Beddoes?'
+
+"'Why, now that you mention it,' said he, 'I remember that my poor
+father used to have an invitation from him to shoot over his preserves
+every autumn.'
+
+"'Then it is undoubtedly from him that the note comes,' said I. 'It only
+remains for us to find out what this secret was which the sailor Hudson
+seems to have held over the heads of these two wealthy and respected
+men.'
+
+"'Alas, Holmes, I fear that it is one of sin and shame!' cried my
+friend. 'But from you I shall have no secrets. Here is the statement
+which was drawn up by my father when he knew that the danger from Hudson
+had become imminent. I found it in the Japanese cabinet, as he told the
+doctor. Take it and read it to me, for I have neither the strength nor
+the courage to do it myself.'
+
+"These are the very papers, Watson, which he handed to me, and I will
+read them to you, as I read them in the old study that night to him.
+They are endorsed outside, as you see, 'Some particulars of the voyage
+of the bark _Gloria Scott_, from her leaving Falmouth on the 8th
+October, 1855, to her destruction in N. Lat. 15 degrees 20', W. Long.
+25 degrees 14' on Nov. 6th.' It is in the form of a letter, and runs in
+this way:
+
+"'My dear, dear son, now that approaching disgrace begins to darken the
+closing years of my life, I can write with all truth and honesty that it
+is not the terror of the law, it is not the loss of my position in the
+county, nor is it my fall in the eyes of all who have known me, which
+cuts me to the heart; but it is the thought that you should come to
+blush for me--you who love me and who have seldom, I hope, had reason to
+do other than respect me. But if the blow falls which is forever hanging
+over me, then I should wish you to read this, that you may know straight
+from me how far I have been to blame. On the other hand, if all should
+go well (which may kind God Almighty grant!), then if by any chance this
+paper should be still undestroyed and should fall into your hands, I
+conjure you, by all you hold sacred, by the memory of your dear mother,
+and by the love which had been between us, to hurl it into the fire and
+to never give one thought to it again.
+
+"'If then your eye goes on to read this line, I know that I shall
+already have been exposed and dragged from my home, or as is more
+likely, for you know that my heart is weak, by lying with my tongue
+sealed forever in death. In either case the time for suppression is
+past, and every word which I tell you is the naked truth, and this I
+swear as I hope for mercy.
+
+"'My name, dear lad, is not Trevor. I was James Armitage in my younger
+days, and you can understand now the shock that it was to me a few weeks
+ago when your college friend addressed me in words which seemed to imply
+that he had surprised my secret. As Armitage it was that I entered a
+London banking-house, and as Armitage I was convicted of breaking my
+country's laws, and was sentenced to transportation. Do not think very
+harshly of me, laddie. It was a debt of honor, so called, which I had
+to pay, and I used money which was not my own to do it, in the certainty
+that I could replace it before there could be any possibility of its
+being missed. But the most dreadful ill-luck pursued me. The money which
+I had reckoned upon never came to hand, and a premature examination of
+accounts exposed my deficit. The case might have been dealt leniently
+with, but the laws were more harshly administered thirty years ago than
+now, and on my twenty-third birthday I found myself chained as a felon
+with thirty-seven other convicts in 'tween-decks of the bark _Gloria
+Scott_, bound for Australia.
+
+"'It was the year '55 when the Crimean war was at its height, and the
+old convict ships had been largely used as transports in the Black
+Sea. The government was compelled, therefore, to use smaller and less
+suitable vessels for sending out their prisoners. The Gloria Scott
+had been in the Chinese tea-trade, but she was an old-fashioned,
+heavy-bowed, broad-beamed craft, and the new clippers had cut her
+out. She was a five-hundred-ton boat; and besides her thirty-eight
+jail-birds, she carried twenty-six of a crew, eighteen soldiers, a
+captain, three mates, a doctor, a chaplain, and four warders. Nearly a
+hundred souls were in her, all told, when we set sail from Falmouth.
+
+"'The partitions between the cells of the convicts, instead of being of
+thick oak, as is usual in convict-ships, were quite thin and frail.
+The man next to me, upon the aft side, was one whom I had particularly
+noticed when we were led down the quay. He was a young man with a
+clear, hairless face, a long, thin nose, and rather nut-cracker jaws.
+He carried his head very jauntily in the air, had a swaggering style
+of walking, and was, above all else, remarkable for his extraordinary
+height. I don't think any of our heads would have come up to his
+shoulder, and I am sure that he could not have measured less than six
+and a half feet. It was strange among so many sad and weary faces to see
+one which was full of energy and resolution. The sight of it was to me
+like a fire in a snow-storm. I was glad, then, to find that he was my
+neighbor, and gladder still when, in the dead of the night, I heard a
+whisper close to my ear, and found that he had managed to cut an opening
+in the board which separated us.
+
+"'"Hullo, chummy!" said he, "what's your name, and what are you here
+for?"
+
+"'I answered him, and asked in turn who I was talking with.
+
+"'"I'm Jack Prendergast," said he, "and by God! You'll learn to bless my
+name before you've done with me."
+
+"'I remembered hearing of his case, for it was one which had made an
+immense sensation throughout the country some time before my own arrest.
+He was a man of good family and of great ability, but of incurably
+vicious habits, who had by an ingenious system of fraud obtained huge
+sums of money from the leading London merchants.
+
+"'"Ha, ha! You remember my case!" said he proudly.
+
+"'"Very well, indeed."
+
+"'"Then maybe you remember something queer about it?"
+
+"'"What was that, then?"
+
+"'"I'd had nearly a quarter of a million, hadn't I?"
+
+"'"So it was said."
+
+"'"But none was recovered, eh?"
+
+"'"No."
+
+"'"Well, where d'ye suppose the balance is?" he asked.
+
+"'"I have no idea," said I.
+
+"'"Right between my finger and thumb," he cried. "By God! I've got more
+pounds to my name than you've hairs on your head. And if you've money,
+my son, and know how to handle it and spread it, you can do anything.
+Now, you don't think it likely that a man who could do anything is going
+to wear his breeches out sitting in the stinking hold of a rat-gutted,
+beetle-ridden, mouldy old coffin of a Chin China coaster. No, sir, such
+a man will look after himself and will look after his chums. You may lay
+to that! You hold on to him, and you may kiss the book that he'll haul
+you through."
+
+"'That was his style of talk, and at first I thought it meant nothing;
+but after a while, when he had tested me and sworn me in with all
+possible solemnity, he let me understand that there really was a plot
+to gain command of the vessel. A dozen of the prisoners had hatched it
+before they came aboard, Prendergast was the leader, and his money was
+the motive power.
+
+"'"I'd a partner," said he, "a rare good man, as true as a stock to a
+barrel. He's got the dibbs, he has, and where do you think he is at this
+moment? Why, he's the chaplain of this ship--the chaplain, no less! He
+came aboard with a black coat, and his papers right, and money enough in
+his box to buy the thing right up from keel to main-truck. The crew
+are his, body and soul. He could buy 'em at so much a gross with a cash
+discount, and he did it before ever they signed on. He's got two of the
+warders and Mereer, the second mate, and he'd get the captain himself,
+if he thought him worth it."
+
+"'"What are we to do, then?" I asked.
+
+"'"What do you think?" said he. "We'll make the coats of some of these
+soldiers redder than ever the tailor did."
+
+"'"But they are armed," said I.
+
+"'"And so shall we be, my boy. There's a brace of pistols for every
+mother's son of us, and if we can't carry this ship, with the crew at
+our back, it's time we were all sent to a young misses' boarding-school.
+You speak to your mate upon the left to-night, and see if he is to be
+trusted."
+
+"'I did so, and found my other neighbor to be a young fellow in much
+the same position as myself, whose crime had been forgery. His name was
+Evans, but he afterwards changed it, like myself, and he is now a rich
+and prosperous man in the south of England. He was ready enough to join
+the conspiracy, as the only means of saving ourselves, and before we had
+crossed the Bay there were only two of the prisoners who were not in the
+secret. One of these was of weak mind, and we did not dare to trust him,
+and the other was suffering from jaundice, and could not be of any use
+to us.
+
+"'From the beginning there was really nothing to prevent us from taking
+possession of the ship. The crew were a set of ruffians, specially
+picked for the job. The sham chaplain came into our cells to exhort us,
+carrying a black bag, supposed to be full of tracts, and so often did
+he come that by the third day we had each stowed away at the foot of our
+beds a file, a brace of pistols, a pound of powder, and twenty slugs.
+Two of the warders were agents of Prendergast, and the second mate was
+his right-hand man. The captain, the two mates, two warders Lieutenant
+Martin, his eighteen soldiers, and the doctor were all that we had
+against us. Yet, safe as it was, we determined to neglect no precaution,
+and to make our attack suddenly by night. It came, however, more quickly
+than we expected, and in this way.
+
+"'One evening, about the third week after our start, the doctor had come
+down to see one of the prisoners who was ill, and putting his hand down
+on the bottom of his bunk he felt the outline of the pistols. If he had
+been silent he might have blown the whole thing, but he was a nervous
+little chap, so he gave a cry of surprise and turned so pale that the
+man knew what was up in an instant and seized him. He was gagged before
+he could give the alarm, and tied down upon the bed. He had unlocked
+the door that led to the deck, and we were through it in a rush. The two
+sentries were shot down, and so was a corporal who came running to see
+what was the matter. There were two more soldiers at the door of the
+state-room, and their muskets seemed not to be loaded, for they never
+fired upon us, and they were shot while trying to fix their bayonets.
+Then we rushed on into the captain's cabin, but as we pushed open the
+door there was an explosion from within, and there he lay with his
+brains smeared over the chart of the Atlantic which was pinned upon the
+table, while the chaplain stood with a smoking pistol in his hand at
+his elbow. The two mates had both been seized by the crew, and the whole
+business seemed to be settled.
+
+"'The state-room was next the cabin, and we flocked in there and flopped
+down on the settees, all speaking together, for we were just mad with
+the feeling that we were free once more. There were lockers all round,
+and Wilson, the sham chaplain, knocked one of them in, and pulled out a
+dozen of brown sherry. We cracked off the necks of the bottles, poured
+the stuff out into tumblers, and were just tossing them off, when in an
+instant without warning there came the roar of muskets in our ears, and
+the saloon was so full of smoke that we could not see across the table.
+When it cleared again the place was a shambles. Wilson and eight others
+were wriggling on the top of each other on the floor, and the blood and
+the brown sherry on that table turn me sick now when I think of it. We
+were so cowed by the sight that I think we should have given the job up
+if it had not been for Prendergast. He bellowed like a bull and rushed
+for the door with all that were left alive at his heels. Out we ran,
+and there on the poop were the lieutenant and ten of his men. The swing
+skylights above the saloon table had been a bit open, and they had fired
+on us through the slit. We got on them before they could load, and they
+stood to it like men; but we had the upper hand of them, and in five
+minutes it was all over. My God! Was there ever a slaughter-house
+like that ship! Prendergast was like a raging devil, and he picked the
+soldiers up as if they had been children and threw them overboard alive
+or dead. There was one sergeant that was horribly wounded and yet kept
+on swimming for a surprising time, until some one in mercy blew out his
+brains. When the fighting was over there was no one left of our enemies
+except just the warders the mates, and the doctor.
+
+"'It was over them that the great quarrel arose. There were many of us
+who were glad enough to win back our freedom, and yet who had no wish
+to have murder on our souls. It was one thing to knock the soldiers over
+with their muskets in their hands, and it was another to stand by while
+men were being killed in cold blood. Eight of us, five convicts and
+three sailors, said that we would not see it done. But there was no
+moving Prendergast and those who were with him. Our only chance of
+safety lay in making a clean job of it, said he, and he would not leave
+a tongue with power to wag in a witness-box. It nearly came to our
+sharing the fate of the prisoners, but at last he said that if we wished
+we might take a boat and go. We jumped at the offer, for we were already
+sick of these bloodthirsty doings, and we saw that there would be worse
+before it was done. We were given a suit of sailor togs each, a barrel
+of water, two casks, one of junk and one of biscuits, and a compass.
+Prendergast threw us over a chart, told us that we were shipwrecked
+mariners whose ship had foundered in Lat. 15 degrees and Long 25 degrees
+west, and then cut the painter and let us go.
+
+"'And now I come to the most surprising part of my story, my dear son.
+The seamen had hauled the fore-yard aback during the rising, but now as
+we left them they brought it square again, and as there was a light wind
+from the north and east the bark began to draw slowly away from us. Our
+boat lay, rising and falling, upon the long, smooth rollers, and Evans
+and I, who were the most educated of the party, were sitting in the
+sheets working out our position and planning what coast we should make
+for. It was a nice question, for the Cape de Verdes were about five
+hundred miles to the north of us, and the African coast about seven
+hundred to the east. On the whole, as the wind was coming round to the
+north, we thought that Sierra Leone might be best, and turned our head
+in that direction, the bark being at that time nearly hull down on our
+starboard quarter. Suddenly as we looked at her we saw a dense black
+cloud of smoke shoot up from her, which hung like a monstrous tree upon
+the sky line. A few seconds later a roar like thunder burst upon our
+ears, and as the smoke thinned away there was no sign left of the
+_Gloria Scott_. In an instant we swept the boat's head round again and
+pulled with all our strength for the place where the haze still trailing
+over the water marked the scene of this catastrophe.
+
+"'It was a long hour before we reached it, and at first we feared that
+we had come too late to save any one. A splintered boat and a number of
+crates and fragments of spars rising and falling on the waves showed us
+where the vessel had foundered; but there was no sign of life, and we
+had turned away in despair when we heard a cry for help, and saw at some
+distance a piece of wreckage with a man lying stretched across it. When
+we pulled him aboard the boat he proved to be a young seaman of the
+name of Hudson, who was so burned and exhausted that he could give us no
+account of what had happened until the following morning.
+
+"'It seemed that after we had left, Prendergast and his gang had
+proceeded to put to death the five remaining prisoners. The two warders
+had been shot and thrown overboard, and so also had the third mate.
+Prendergast then descended into the 'tween-decks and with his own hands
+cut the throat of the unfortunate surgeon. There only remained the first
+mate, who was a bold and active man. When he saw the convict approaching
+him with the bloody knife in his hand he kicked off his bonds, which he
+had somehow contrived to loosen, and rushing down the deck he plunged
+into the after-hold. A dozen convicts, who descended with their pistols
+in search of him, found him with a match-box in his hand seated beside
+an open powder-barrel, which was one of a hundred carried on board, and
+swearing that he would blow all hands up if he were in any way molested.
+An instant later the explosion occurred, though Hudson thought it was
+caused by the misdirected bullet of one of the convicts rather than the
+mate's match. Be the cause what it may, it was the end of the _Gloria
+Scott_ and of the rabble who held command of her.
+
+"'Such, in a few words, my dear boy, is the history of this terrible
+business in which I was involved. Next day we were picked up by the brig
+_Hotspur_, bound for Australia, whose captain found no difficulty in
+believing that we were the survivors of a passenger ship which had
+foundered. The transport ship Gloria Scott was set down by the Admiralty
+as being lost at sea, and no word has ever leaked out as to her true
+fate. After an excellent voyage the _Hotspur_ landed us at Sydney, where
+Evans and I changed our names and made our way to the diggings,
+where, among the crowds who were gathered from all nations, we had no
+difficulty in losing our former identities. The rest I need not relate.
+We prospered, we traveled, we came back as rich colonials to England,
+and we bought country estates. For more than twenty years we have
+led peaceful and useful lives, and we hoped that our past was forever
+buried. Imagine, then, my feelings when in the seaman who came to us I
+recognized instantly the man who had been picked off the wreck. He had
+tracked us down somehow, and had set himself to live upon our fears. You
+will understand now how it was that I strove to keep the peace with him,
+and you will in some measure sympathize with me in the fears which fill
+me, now that he has gone from me to his other victim with threats upon
+his tongue.'
+
+"Underneath is written in a hand so shaky as to be hardly legible,
+'Beddoes writes in cipher to say H. Has told all. Sweet Lord, have mercy
+on our souls!'
+
+"That was the narrative which I read that night to young Trevor, and I
+think, Watson, that under the circumstances it was a dramatic one.
+The good fellow was heart-broken at it, and went out to the Terai tea
+planting, where I hear that he is doing well. As to the sailor and
+Beddoes, neither of them was ever heard of again after that day on which
+the letter of warning was written. They both disappeared utterly and
+completely. No complaint had been lodged with the police, so that
+Beddoes had mistaken a threat for a deed. Hudson had been seen lurking
+about, and it was believed by the police that he had done away with
+Beddoes and had fled. For myself I believe that the truth was exactly
+the opposite. I think that it is most probable that Beddoes, pushed to
+desperation and believing himself to have been already betrayed, had
+revenged himself upon Hudson, and had fled from the country with as much
+money as he could lay his hands on. Those are the facts of the case,
+Doctor, and if they are of any use to your collection, I am sure that
+they are very heartily at your service."
+
+
+
+
+Adventure V. The Musgrave Ritual
+
+
+An anomaly which often struck me in the character of my friend Sherlock
+Holmes was that, although in his methods of thought he was the neatest
+and most methodical of mankind, and although also he affected a certain
+quiet primness of dress, he was none the less in his personal habits one
+of the most untidy men that ever drove a fellow-lodger to distraction.
+Not that I am in the least conventional in that respect myself. The
+rough-and-tumble work in Afghanistan, coming on the top of a natural
+Bohemianism of disposition, has made me rather more lax than befits a
+medical man. But with me there is a limit, and when I find a man who
+keeps his cigars in the coal-scuttle, his tobacco in the toe end of
+a Persian slipper, and his unanswered correspondence transfixed by a
+jack-knife into the very centre of his wooden mantelpiece, then I begin
+to give myself virtuous airs. I have always held, too, that pistol
+practice should be distinctly an open-air pastime; and when Holmes, in
+one of his queer humors, would sit in an arm-chair with his hair-trigger
+and a hundred Boxer cartridges, and proceed to adorn the opposite
+wall with a patriotic V. R. done in bullet-pocks, I felt strongly that
+neither the atmosphere nor the appearance of our room was improved by
+it.
+
+Our chambers were always full of chemicals and of criminal relics which
+had a way of wandering into unlikely positions, and of turning up in
+the butter-dish or in even less desirable places. But his papers were
+my great crux. He had a horror of destroying documents, especially those
+which were connected with his past cases, and yet it was only once in
+every year or two that he would muster energy to docket and arrange
+them; for, as I have mentioned somewhere in these incoherent memoirs,
+the outbursts of passionate energy when he performed the remarkable
+feats with which his name is associated were followed by reactions of
+lethargy during which he would lie about with his violin and his books,
+hardly moving save from the sofa to the table. Thus month after month
+his papers accumulated, until every corner of the room was stacked with
+bundles of manuscript which were on no account to be burned, and which
+could not be put away save by their owner. One winter's night, as we
+sat together by the fire, I ventured to suggest to him that, as he had
+finished pasting extracts into his common-place book, he might employ
+the next two hours in making our room a little more habitable. He could
+not deny the justice of my request, so with a rather rueful face he went
+off to his bedroom, from which he returned presently pulling a large tin
+box behind him. This he placed in the middle of the floor and, squatting
+down upon a stool in front of it, he threw back the lid. I could see
+that it was already a third full of bundles of paper tied up with red
+tape into separate packages.
+
+"There are cases enough here, Watson," said he, looking at me with
+mischievous eyes. "I think that if you knew all that I had in this box
+you would ask me to pull some out instead of putting others in."
+
+"These are the records of your early work, then?" I asked. "I have often
+wished that I had notes of those cases."
+
+"Yes, my boy, these were all done prematurely before my biographer
+had come to glorify me." He lifted bundle after bundle in a tender,
+caressing sort of way. "They are not all successes, Watson," said he.
+"But there are some pretty little problems among them. Here's the record
+of the Tarleton murders, and the case of Vamberry, the wine merchant,
+and the adventure of the old Russian woman, and the singular affair
+of the aluminium crutch, as well as a full account of Ricoletti of the
+club-foot, and his abominable wife. And here--ah, now, this really is
+something a little recherché."
+
+He dived his arm down to the bottom of the chest, and brought up a small
+wooden box with a sliding lid, such as children's toys are kept in. From
+within he produced a crumpled piece of paper, and old-fashioned brass
+key, a peg of wood with a ball of string attached to it, and three rusty
+old disks of metal.
+
+"Well, my boy, what do you make of this lot?" he asked, smiling at my
+expression.
+
+"It is a curious collection."
+
+"Very curious, and the story that hangs round it will strike you as
+being more curious still."
+
+"These relics have a history then?"
+
+"So much so that they are history."
+
+"What do you mean by that?"
+
+Sherlock Holmes picked them up one by one, and laid them along the edge
+of the table. Then he reseated himself in his chair and looked them over
+with a gleam of satisfaction in his eyes.
+
+"These," said he, "are all that I have left to remind me of the
+adventure of the Musgrave Ritual."
+
+I had heard him mention the case more than once, though I had never been
+able to gather the details. "I should be so glad," said I, "if you would
+give me an account of it."
+
+"And leave the litter as it is?" he cried, mischievously. "Your tidiness
+won't bear much strain after all, Watson. But I should be glad that you
+should add this case to your annals, for there are points in it which
+make it quite unique in the criminal records of this or, I believe,
+of any other country. A collection of my trifling achievements would
+certainly be incomplete which contained no account of this very singular
+business.
+
+"You may remember how the affair of the _Gloria Scott_, and my
+conversation with the unhappy man whose fate I told you of, first turned
+my attention in the direction of the profession which has become my
+life's work. You see me now when my name has become known far and
+wide, and when I am generally recognized both by the public and by the
+official force as being a final court of appeal in doubtful cases.
+Even when you knew me first, at the time of the affair which you have
+commemorated in 'A Study in Scarlet,' I had already established a
+considerable, though not a very lucrative, connection. You can hardly
+realize, then, how difficult I found it at first, and how long I had to
+wait before I succeeded in making any headway.
+
+"When I first came up to London I had rooms in Montague Street, just
+round the corner from the British Museum, and there I waited, filling in
+my too abundant leisure time by studying all those branches of science
+which might make me more efficient. Now and again cases came in my way,
+principally through the introduction of old fellow-students, for during
+my last years at the University there was a good deal of talk there
+about myself and my methods. The third of these cases was that of the
+Musgrave Ritual, and it is to the interest which was aroused by that
+singular chain of events, and the large issues which proved to be at
+stake, that I trace my first stride towards the position which I now
+hold.
+
+"Reginald Musgrave had been in the same college as myself, and I had
+some slight acquaintance with him. He was not generally popular among
+the undergraduates, though it always seemed to me that what was set down
+as pride was really an attempt to cover extreme natural diffidence.
+In appearance he was a man of exceedingly aristocratic type, thin,
+high-nosed, and large-eyed, with languid and yet courtly manners. He was
+indeed a scion of one of the very oldest families in the kingdom,
+though his branch was a cadet one which had separated from the northern
+Musgraves some time in the sixteenth century, and had established itself
+in western Sussex, where the Manor House of Hurlstone is perhaps the
+oldest inhabited building in the county. Something of his birth place
+seemed to cling to the man, and I never looked at his pale, keen face
+or the poise of his head without associating him with gray archways and
+mullioned windows and all the venerable wreckage of a feudal keep. Once
+or twice we drifted into talk, and I can remember that more than once he
+expressed a keen interest in my methods of observation and inference.
+
+"For four years I had seen nothing of him until one morning he walked
+into my room in Montague Street. He had changed little, was dressed like
+a young man of fashion--he was always a bit of a dandy--and preserved
+the same quiet, suave manner which had formerly distinguished him.
+
+"'How has all gone with you Musgrave?' I asked, after we had cordially
+shaken hands.
+
+"'You probably heard of my poor father's death,' said he; 'he was
+carried off about two years ago. Since then I have of course had the
+Hurlstone estates to manage, and as I am member for my district as well,
+my life has been a busy one. But I understand, Holmes, that you are
+turning to practical ends those powers with which you used to amaze us?'
+
+"'Yes,' said I, 'I have taken to living by my wits.'
+
+"'I am delighted to hear it, for your advice at present would be
+exceedingly valuable to me. We have had some very strange doings at
+Hurlstone, and the police have been able to throw no light upon the
+matter. It is really the most extraordinary and inexplicable business.'
+
+"You can imagine with what eagerness I listened to him, Watson, for
+the very chance for which I had been panting during all those months
+of inaction seemed to have come within my reach. In my inmost heart I
+believed that I could succeed where others failed, and now I had the
+opportunity to test myself.
+
+"'Pray, let me have the details,' I cried.
+
+"Reginald Musgrave sat down opposite to me, and lit the cigarette which
+I had pushed towards him.
+
+"'You must know,' said he, 'that though I am a bachelor, I have to keep
+up a considerable staff of servants at Hurlstone, for it is a rambling
+old place, and takes a good deal of looking after. I preserve, too, and
+in the pheasant months I usually have a house-party, so that it would
+not do to be short-handed. Altogether there are eight maids, the cook,
+the butler, two footmen, and a boy. The garden and the stables of course
+have a separate staff.
+
+"'Of these servants the one who had been longest in our service was
+Brunton the butler. He was a young school-master out of place when he
+was first taken up by my father, but he was a man of great energy and
+character, and he soon became quite invaluable in the household. He was
+a well-grown, handsome man, with a splendid forehead, and though he has
+been with us for twenty years he cannot be more than forty now. With
+his personal advantages and his extraordinary gifts--for he can speak
+several languages and play nearly every musical instrument--it is
+wonderful that he should have been satisfied so long in such a position,
+but I suppose that he was comfortable, and lacked energy to make any
+change. The butler of Hurlstone is always a thing that is remembered by
+all who visit us.
+
+"'But this paragon has one fault. He is a bit of a Don Juan, and you can
+imagine that for a man like him it is not a very difficult part to play
+in a quiet country district. When he was married it was all right, but
+since he has been a widower we have had no end of trouble with him. A
+few months ago we were in hopes that he was about to settle down again
+for he became engaged to Rachel Howells, our second house-maid; but he
+has thrown her over since then and taken up with Janet Tregellis, the
+daughter of the head game-keeper. Rachel--who is a very good girl, but
+of an excitable Welsh temperament--had a sharp touch of brain-fever,
+and goes about the house now--or did until yesterday--like a black-eyed
+shadow of her former self. That was our first drama at Hurlstone; but a
+second one came to drive it from our minds, and it was prefaced by the
+disgrace and dismissal of butler Brunton.
+
+"'This was how it came about. I have said that the man was intelligent,
+and this very intelligence has caused his ruin, for it seems to have
+led to an insatiable curiosity about things which did not in the least
+concern him. I had no idea of the lengths to which this would carry him,
+until the merest accident opened my eyes to it.
+
+"'I have said that the house is a rambling one. One day last week--on
+Thursday night, to be more exact--I found that I could not sleep,
+having foolishly taken a cup of strong café noir after my dinner. After
+struggling against it until two in the morning, I felt that it was quite
+hopeless, so I rose and lit the candle with the intention of continuing
+a novel which I was reading. The book, however, had been left in the
+billiard-room, so I pulled on my dressing-gown and started off to get
+it.
+
+"'In order to reach the billiard-room I had to descend a flight of
+stairs and then to cross the head of a passage which led to the library
+and the gun-room. You can imagine my surprise when, as I looked down
+this corridor, I saw a glimmer of light coming from the open door of the
+library. I had myself extinguished the lamp and closed the door before
+coming to bed. Naturally my first thought was of burglars. The corridors
+at Hurlstone have their walls largely decorated with trophies of old
+weapons. From one of these I picked a battle-axe, and then, leaving my
+candle behind me, I crept on tiptoe down the passage and peeped in at
+the open door.
+
+"'Brunton, the butler, was in the library. He was sitting, fully
+dressed, in an easy-chair, with a slip of paper which looked like a
+map upon his knee, and his forehead sunk forward upon his hand in deep
+thought. I stood dumb with astonishment, watching him from the darkness.
+A small taper on the edge of the table shed a feeble light which
+sufficed to show me that he was fully dressed. Suddenly, as I looked,
+he rose from his chair, and walking over to a bureau at the side, he
+unlocked it and drew out one of the drawers. From this he took a paper,
+and returning to his seat he flattened it out beside the taper on the
+edge of the table, and began to study it with minute attention. My
+indignation at this calm examination of our family documents overcame
+me so far that I took a step forward, and Brunton, looking up, saw me
+standing in the doorway. He sprang to his feet, his face turned livid
+with fear, and he thrust into his breast the chart-like paper which he
+had been originally studying.
+
+"'"So!" said I. "This is how you repay the trust which we have reposed
+in you. You will leave my service to-morrow."
+
+"'He bowed with the look of a man who is utterly crushed, and slunk past
+me without a word. The taper was still on the table, and by its light
+I glanced to see what the paper was which Brunton had taken from the
+bureau. To my surprise it was nothing of any importance at all,
+but simply a copy of the questions and answers in the singular old
+observance called the Musgrave Ritual. It is a sort of ceremony peculiar
+to our family, which each Musgrave for centuries past has gone through
+on his coming of age--a thing of private interest, and perhaps of some
+little importance to the archaeologist, like our own blazonings and
+charges, but of no practical use whatever.'
+
+"'We had better come back to the paper afterwards,' said I.
+
+"'If you think it really necessary,' he answered, with some hesitation.
+'To continue my statement, however: I relocked the bureau, using the key
+which Brunton had left, and I had turned to go when I was surprised to
+find that the butler had returned, and was standing before me.
+
+"'"Mr. Musgrave, sir," he cried, in a voice which was hoarse with
+emotion, "I can't bear disgrace, sir. I've always been proud above my
+station in life, and disgrace would kill me. My blood will be on your
+head, sir--it will, indeed--if you drive me to despair. If you cannot
+keep me after what has passed, then for God's sake let me give you
+notice and leave in a month, as if of my own free will. I could stand
+that, Mr. Musgrave, but not to be cast out before all the folk that I
+know so well."
+
+"'"You don't deserve much consideration, Brunton," I answered. "Your
+conduct has been most infamous. However, as you have been a long time in
+the family, I have no wish to bring public disgrace upon you. A month,
+however is too long. Take yourself away in a week, and give what reason
+you like for going."
+
+"'"Only a week, sir?" he cried, in a despairing voice. "A fortnight--say
+at least a fortnight!"
+
+"'"A week," I repeated, "and you may consider yourself to have been very
+leniently dealt with."
+
+"'He crept away, his face sunk upon his breast, like a broken man, while
+I put out the light and returned to my room.
+
+
+"'"For two days after this Brunton was most assiduous in his attention
+to his duties. I made no allusion to what had passed, and waited with
+some curiosity to see how he would cover his disgrace. On the third
+morning, however he did not appear, as was his custom, after breakfast
+to receive my instructions for the day. As I left the dining-room I
+happened to meet Rachel Howells, the maid. I have told you that she had
+only recently recovered from an illness, and was looking so wretchedly
+pale and wan that I remonstrated with her for being at work.
+
+"'"You should be in bed," I said. "Come back to your duties when you are
+stronger."
+
+"'She looked at me with so strange an expression that I began to suspect
+that her brain was affected.
+
+"'"I am strong enough, Mr. Musgrave," said she.
+
+"'"We will see what the doctor says," I answered. "You must stop work
+now, and when you go downstairs just say that I wish to see Brunton."
+
+"'"The butler is gone," said she.
+
+"'"Gone! Gone where?"
+
+"'"He is gone. No one has seen him. He is not in his room. Oh, yes, he
+is gone, he is gone!" She fell back against the wall with shriek after
+shriek of laughter, while I, horrified at this sudden hysterical attack,
+rushed to the bell to summon help. The girl was taken to her room, still
+screaming and sobbing, while I made inquiries about Brunton. There was
+no doubt about it that he had disappeared. His bed had not been slept
+in, he had been seen by no one since he had retired to his room the
+night before, and yet it was difficult to see how he could have left
+the house, as both windows and doors were found to be fastened in the
+morning. His clothes, his watch, and even his money were in his room,
+but the black suit which he usually wore was missing. His slippers,
+too, were gone, but his boots were left behind. Where then could butler
+Brunton have gone in the night, and what could have become of him now?
+
+"'Of course we searched the house from cellar to garret, but there was
+no trace of him. It is, as I have said, a labyrinth of an old house,
+especially the original wing, which is now practically uninhabited; but
+we ransacked every room and cellar without discovering the least sign
+of the missing man. It was incredible to me that he could have gone away
+leaving all his property behind him, and yet where could he be? I called
+in the local police, but without success. Rain had fallen on the night
+before and we examined the lawn and the paths all round the house, but
+in vain. Matters were in this state, when a new development quite drew
+our attention away from the original mystery.
+
+"'For two days Rachel Howells had been so ill, sometimes delirious,
+sometimes hysterical, that a nurse had been employed to sit up with her
+at night. On the third night after Brunton's disappearance, the nurse,
+finding her patient sleeping nicely, had dropped into a nap in the
+arm-chair, when she woke in the early morning to find the bed empty, the
+window open, and no signs of the invalid. I was instantly aroused, and,
+with the two footmen, started off at once in search of the missing girl.
+It was not difficult to tell the direction which she had taken, for,
+starting from under her window, we could follow her footmarks easily
+across the lawn to the edge of the mere, where they vanished close to
+the gravel path which leads out of the grounds. The lake there is eight
+feet deep, and you can imagine our feelings when we saw that the trail
+of the poor demented girl came to an end at the edge of it.
+
+"'Of course, we had the drags at once, and set to work to recover the
+remains, but no trace of the body could we find. On the other hand, we
+brought to the surface an object of a most unexpected kind. It was a
+linen bag which contained within it a mass of old rusted and discolored
+metal and several dull-colored pieces of pebble or glass. This strange
+find was all that we could get from the mere, and, although we made
+every possible search and inquiry yesterday, we know nothing of the fate
+either of Rachel Howells or of Richard Brunton. The county police are at
+their wits' end, and I have come up to you as a last resource.'
+
+"You can imagine, Watson, with what eagerness I listened to this
+extraordinary sequence of events, and endeavored to piece them together,
+and to devise some common thread upon which they might all hang. The
+butler was gone. The maid was gone. The maid had loved the butler, but
+had afterwards had cause to hate him. She was of Welsh blood, fiery
+and passionate. She had been terribly excited immediately after his
+disappearance. She had flung into the lake a bag containing some
+curious contents. These were all factors which had to be taken into
+consideration, and yet none of them got quite to the heart of the
+matter. What was the starting-point of this chain of events? There lay
+the end of this tangled line.
+
+"'I must see that paper, Musgrave,' said I, 'which this butler of your
+thought it worth his while to consult, even at the risk of the loss of
+his place.'
+
+"'It is rather an absurd business, this ritual of ours,' he answered.
+'But it has at least the saving grace of antiquity to excuse it. I have
+a copy of the questions and answers here if you care to run your eye
+over them.'
+
+"He handed me the very paper which I have here, Watson, and this is the
+strange catechism to which each Musgrave had to submit when he came to
+man's estate. I will read you the questions and answers as they stand.
+
+"'Whose was it?'
+
+"'His who is gone.'
+
+"'Who shall have it?'
+
+"'He who will come.'
+
+"'Where was the sun?'
+
+"'Over the oak.'
+
+"'Where was the shadow?'
+
+"'Under the elm.'
+
+"How was it stepped?'
+
+"'North by ten and by ten, east by five and by five, south by two and by
+two, west by one and by one, and so under.'
+
+"'What shall we give for it?'
+
+"'All that is ours.'
+
+"'Why should we give it?'
+
+"'For the sake of the trust.'
+
+"'The original has no date, but is in the spelling of the middle of the
+seventeenth century,' remarked Musgrave. 'I am afraid, however, that it
+can be of little help to you in solving this mystery.'
+
+"'At least,' said I, 'it gives us another mystery, and one which is even
+more interesting than the first. It may be that the solution of the one
+may prove to be the solution of the other. You will excuse me, Musgrave,
+if I say that your butler appears to me to have been a very clever man,
+and to have had a clearer insight than ten generations of his masters.'
+
+"'I hardly follow you,' said Musgrave. 'The paper seems to me to be of
+no practical importance.'
+
+"'But to me it seems immensely practical, and I fancy that Brunton took
+the same view. He had probably seen it before that night on which you
+caught him.'
+
+"'It is very possible. We took no pains to hide it.'
+
+"'He simply wished, I should imagine, to refresh his memory upon that
+last occasion. He had, as I understand, some sort of map or chart which
+he was comparing with the manuscript, and which he thrust into his
+pocket when you appeared.'
+
+"'That is true. But what could he have to do with this old family custom
+of ours, and what does this rigmarole mean?'
+
+"'I don't think that we should have much difficulty in determining
+that,' said I; 'with your permission we will take the first train down
+to Sussex, and go a little more deeply into the matter upon the spot.'
+
+
+"The same afternoon saw us both at Hurlstone. Possibly you have seen
+pictures and read descriptions of the famous old building, so I will
+confine my account of it to saying that it is built in the shape of
+an L, the long arm being the more modern portion, and the shorter the
+ancient nucleus, from which the other had developed. Over the low,
+heavily-lintelled door, in the centre of this old part, is chiseled the
+date, 1607, but experts are agreed that the beams and stone-work are
+really much older than this. The enormously thick walls and tiny windows
+of this part had in the last century driven the family into building the
+new wing, and the old one was used now as a store-house and a cellar,
+when it was used at all. A splendid park with fine old timber surrounds
+the house, and the lake, to which my client had referred, lay close to
+the avenue, about two hundred yards from the building.
+
+"I was already firmly convinced, Watson, that there were not three
+separate mysteries here, but one only, and that if I could read the
+Musgrave Ritual aright I should hold in my hand the clue which would
+lead me to the truth concerning both the butler Brunton and the maid
+Howells. To that then I turned all my energies. Why should this servant
+be so anxious to master this old formula? Evidently because he saw
+something in it which had escaped all those generations of country
+squires, and from which he expected some personal advantage. What was it
+then, and how had it affected his fate?
+
+"It was perfectly obvious to me, on reading the ritual, that the
+measurements must refer to some spot to which the rest of the document
+alluded, and that if we could find that spot, we should be in a fair way
+towards finding what the secret was which the old Musgraves had thought
+it necessary to embalm in so curious a fashion. There were two guides
+given us to start with, an oak and an elm. As to the oak there could be
+no question at all. Right in front of the house, upon the left-hand
+side of the drive, there stood a patriarch among oaks, one of the most
+magnificent trees that I have ever seen.
+
+"'That was there when your ritual was drawn up,' said I, as we drove
+past it.
+
+"'It was there at the Norman Conquest in all probability,' he answered.
+'It has a girth of twenty-three feet.'
+
+"'Have you any old elms?' I asked.
+
+"'There used to be a very old one over yonder but it was struck by
+lightning ten years ago, and we cut down the stump.'
+
+"'You can see where it used to be?'
+
+"'Oh, yes.'
+
+"'There are no other elms?'
+
+"'No old ones, but plenty of beeches.'
+
+"'I should like to see where it grew.'
+
+"We had driven up in a dog-cart, and my client led me away at once,
+without our entering the house, to the scar on the lawn where the
+elm had stood. It was nearly midway between the oak and the house. My
+investigation seemed to be progressing.
+
+"'I suppose it is impossible to find out how high the elm was?' I asked.
+
+"'I can give you it at once. It was sixty-four feet.'
+
+"'How do you come to know it?' I asked, in surprise.
+
+"'When my old tutor used to give me an exercise in trigonometry, it
+always took the shape of measuring heights. When I was a lad I worked
+out every tree and building in the estate.'
+
+"This was an unexpected piece of luck. My data were coming more quickly
+than I could have reasonably hoped.
+
+"'Tell me,' I asked, 'did your butler ever ask you such a question?'
+
+"Reginald Musgrave looked at me in astonishment. 'Now that you call it
+to my mind,' he answered, 'Brunton did ask me about the height of the
+tree some months ago, in connection with some little argument with the
+groom.'
+
+"This was excellent news, Watson, for it showed me that I was on the
+right road. I looked up at the sun. It was low in the heavens, and I
+calculated that in less than an hour it would lie just above the topmost
+branches of the old oak. One condition mentioned in the Ritual would
+then be fulfilled. And the shadow of the elm must mean the farther end
+of the shadow, otherwise the trunk would have been chosen as the guide.
+I had, then, to find where the far end of the shadow would fall when the
+sun was just clear of the oak."
+
+"That must have been difficult, Holmes, when the elm was no longer
+there."
+
+"Well, at least I knew that if Brunton could do it, I could also.
+Besides, there was no real difficulty. I went with Musgrave to his study
+and whittled myself this peg, to which I tied this long string with a
+knot at each yard. Then I took two lengths of a fishing-rod, which came
+to just six feet, and I went back with my client to where the elm had
+been. The sun was just grazing the top of the oak. I fastened the rod
+on end, marked out the direction of the shadow, and measured it. It was
+nine feet in length.
+
+"Of course the calculation now was a simple one. If a rod of six feet
+threw a shadow of nine, a tree of sixty-four feet would throw one of
+ninety-six, and the line of the one would of course be the line of the
+other. I measured out the distance, which brought me almost to the
+wall of the house, and I thrust a peg into the spot. You can imagine
+my exultation, Watson, when within two inches of my peg I saw a conical
+depression in the ground. I knew that it was the mark made by Brunton in
+his measurements, and that I was still upon his trail.
+
+"From this starting-point I proceeded to step, having first taken the
+cardinal points by my pocket-compass. Ten steps with each foot took me
+along parallel with the wall of the house, and again I marked my spot
+with a peg. Then I carefully paced off five to the east and two to the
+south. It brought me to the very threshold of the old door. Two steps
+to the west meant now that I was to go two paces down the stone-flagged
+passage, and this was the place indicated by the Ritual.
+
+"Never have I felt such a cold chill of disappointment, Watson. For a
+moment is seemed to me that there must be some radical mistake in my
+calculations. The setting sun shone full upon the passage floor, and I
+could see that the old, foot-worn gray stones with which it was paved
+were firmly cemented together, and had certainly not been moved for many
+a long year. Brunton had not been at work here. I tapped upon the floor,
+but it sounded the same all over, and there was no sign of any crack
+or crevice. But, fortunately, Musgrave, who had begun to appreciate the
+meaning of my proceedings, and who was now as excited as myself, took
+out his manuscript to check my calculation.
+
+"'And under,' he cried. 'You have omitted the "and under."'
+
+"I had thought that it meant that we were to dig, but now, of course,
+I saw at once that I was wrong. 'There is a cellar under this then?' I
+cried.
+
+"'Yes, and as old as the house. Down here, through this door.'
+
+"We went down a winding stone stair, and my companion, striking a match,
+lit a large lantern which stood on a barrel in the corner. In an instant
+it was obvious that we had at last come upon the true place, and that we
+had not been the only people to visit the spot recently.
+
+"It had been used for the storage of wood, but the billets, which had
+evidently been littered over the floor, were now piled at the sides, so
+as to leave a clear space in the middle. In this space lay a large and
+heavy flagstone with a rusted iron ring in the centre to which a thick
+shepherd's-check muffler was attached.
+
+"'By Jove!' cried my client. 'That's Brunton's muffler. I have seen it
+on him, and could swear to it. What has the villain been doing here?'
+
+"At my suggestion a couple of the county police were summoned to be
+present, and I then endeavored to raise the stone by pulling on the
+cravat. I could only move it slightly, and it was with the aid of one
+of the constables that I succeeded at last in carrying it to one side.
+A black hole yawned beneath into which we all peered, while Musgrave,
+kneeling at the side, pushed down the lantern.
+
+"A small chamber about seven feet deep and four feet square lay open to
+us. At one side of this was a squat, brass-bound wooden box, the lid of
+which was hinged upwards, with this curious old-fashioned key projecting
+from the lock. It was furred outside by a thick layer of dust, and damp
+and worms had eaten through the wood, so that a crop of livid fungi
+was growing on the inside of it. Several discs of metal, old coins
+apparently, such as I hold here, were scattered over the bottom of the
+box, but it contained nothing else.
+
+"At the moment, however, we had no thought for the old chest, for our
+eyes were riveted upon that which crouched beside it. It was the figure
+of a man, clad in a suit of black, who squatted down upon his hams with
+his forehead sunk upon the edge of the box and his two arms thrown out
+on each side of it. The attitude had drawn all the stagnant blood to
+the face, and no man could have recognized that distorted liver-colored
+countenance; but his height, his dress, and his hair were all sufficient
+to show my client, when we had drawn the body up, that it was indeed his
+missing butler. He had been dead some days, but there was no wound or
+bruise upon his person to show how he had met his dreadful end. When
+his body had been carried from the cellar we found ourselves still
+confronted with a problem which was almost as formidable as that with
+which we had started.
+
+"I confess that so far, Watson, I had been disappointed in my
+investigation. I had reckoned upon solving the matter when once I had
+found the place referred to in the Ritual; but now I was there, and was
+apparently as far as ever from knowing what it was which the family had
+concealed with such elaborate precautions. It is true that I had thrown
+a light upon the fate of Brunton, but now I had to ascertain how that
+fate had come upon him, and what part had been played in the matter by
+the woman who had disappeared. I sat down upon a keg in the corner and
+thought the whole matter carefully over.
+
+"You know my methods in such cases, Watson. I put myself in the man's
+place and, having first gauged his intelligence, I try to imagine how I
+should myself have proceeded under the same circumstances. In this
+case the matter was simplified by Brunton's intelligence being quite
+first-rate, so that it was unnecessary to make any allowance for the
+personal equation, as the astronomers have dubbed it. He knew that
+something valuable was concealed. He had spotted the place. He found
+that the stone which covered it was just too heavy for a man to move
+unaided. What would he do next? He could not get help from outside, even
+if he had some one whom he could trust, without the unbarring of doors
+and considerable risk of detection. It was better, if he could, to have
+his helpmate inside the house. But whom could he ask? This girl had been
+devoted to him. A man always finds it hard to realize that he may have
+finally lost a woman's love, however badly he may have treated her. He
+would try by a few attentions to make his peace with the girl Howells,
+and then would engage her as his accomplice. Together they would come at
+night to the cellar, and their united force would suffice to raise the
+stone. So far I could follow their actions as if I had actually seen
+them.
+
+"But for two of them, and one a woman, it must have been heavy work the
+raising of that stone. A burly Sussex policeman and I had found it no
+light job. What would they do to assist them? Probably what I should
+have done myself. I rose and examined carefully the different billets
+of wood which were scattered round the floor. Almost at once I came
+upon what I expected. One piece, about three feet in length, had a very
+marked indentation at one end, while several were flattened at the sides
+as if they had been compressed by some considerable weight. Evidently,
+as they had dragged the stone up they had thrust the chunks of wood into
+the chink, until at last, when the opening was large enough to crawl
+through, they would hold it open by a billet placed lengthwise, which
+might very well become indented at the lower end, since the whole weight
+of the stone would press it down on to the edge of this other slab. So
+far I was still on safe ground.
+
+"And now how was I to proceed to reconstruct this midnight drama?
+Clearly, only one could fit into the hole, and that one was Brunton. The
+girl must have waited above. Brunton then unlocked the box, handed up
+the contents presumably--since they were not to be found--and then--and
+then what happened?
+
+"What smouldering fire of vengeance had suddenly sprung into flame in
+this passionate Celtic woman's soul when she saw the man who had wronged
+her--wronged her, perhaps, far more than we suspected--in her power?
+Was it a chance that the wood had slipped, and that the stone had shut
+Brunton into what had become his sepulchre? Had she only been guilty of
+silence as to his fate? Or had some sudden blow from her hand dashed the
+support away and sent the slab crashing down into its place? Be that
+as it might, I seemed to see that woman's figure still clutching at her
+treasure trove and flying wildly up the winding stair, with her ears
+ringing perhaps with the muffled screams from behind her and with the
+drumming of frenzied hands against the slab of stone which was choking
+her faithless lover's life out.
+
+"Here was the secret of her blanched face, her shaken nerves, her peals
+of hysterical laughter on the next morning. But what had been in the
+box? What had she done with that? Of course, it must have been the old
+metal and pebbles which my client had dragged from the mere. She had
+thrown them in there at the first opportunity to remove the last trace
+of her crime.
+
+"For twenty minutes I had sat motionless, thinking the matter out.
+Musgrave still stood with a very pale face, swinging his lantern and
+peering down into the hole.
+
+"'These are coins of Charles the First,' said he, holding out the few
+which had been in the box; 'you see we were right in fixing our date for
+the Ritual.'
+
+"'We may find something else of Charles the First,' I cried, as the
+probable meaning of the first two questions of the Ritual broke suddenly
+upon me. 'Let me see the contents of the bag which you fished from the
+mere.'
+
+
+"We ascended to his study, and he laid the debris before me. I could
+understand his regarding it as of small importance when I looked at it,
+for the metal was almost black and the stones lustreless and dull. I
+rubbed one of them on my sleeve, however, and it glowed afterwards like
+a spark in the dark hollow of my hand. The metal work was in the form
+of a double ring, but it had been bent and twisted out of its original
+shape.
+
+"'You must bear in mind,' said I, 'that the royal party made head in
+England even after the death of the king, and that when they at last
+fled they probably left many of their most precious possessions buried
+behind them, with the intention of returning for them in more peaceful
+times.'
+
+"'My ancestor, Sir Ralph Musgrave, was a prominent Cavalier and the
+right-hand man of Charles the Second in his wanderings,' said my friend.
+
+"'Ah, indeed!' I answered. 'Well now, I think that really should give us
+the last link that we wanted. I must congratulate you on coming into
+the possession, though in rather a tragic manner of a relic which is of
+great intrinsic value, but of even greater importance as an historical
+curiosity.'
+
+"'What is it, then?' he gasped in astonishment.
+
+"'It is nothing less than the ancient crown of the kings of England.'
+
+"'The crown!'
+
+"'Precisely. Consider what the Ritual says: How does it run? "Whose was
+it?" "His who is gone." That was after the execution of Charles. Then,
+"Who shall have it?" "He who will come." That was Charles the Second,
+whose advent was already foreseen. There can, I think, be no doubt that
+this battered and shapeless diadem once encircled the brows of the royal
+Stuarts.'
+
+"'And how came it in the pond?'
+
+"'Ah, that is a question that will take some time to answer.' And with
+that I sketched out to him the whole long chain of surmise and of proof
+which I had constructed. The twilight had closed in and the moon was
+shining brightly in the sky before my narrative was finished.
+
+"'And how was it then that Charles did not get his crown when he
+returned?' asked Musgrave, pushing back the relic into its linen bag.
+
+"'Ah, there you lay your finger upon the one point which we shall
+probably never be able to clear up. It is likely that the Musgrave who
+held the secret died in the interval, and by some oversight left this
+guide to his descendant without explaining the meaning of it. From that
+day to this it has been handed down from father to son, until at last
+it came within reach of a man who tore its secret out of it and lost his
+life in the venture.'
+
+
+"And that's the story of the Musgrave Ritual, Watson. They have the
+crown down at Hurlstone--though they had some legal bother and a
+considerable sum to pay before they were allowed to retain it. I am sure
+that if you mentioned my name they would be happy to show it to you. Of
+the woman nothing was ever heard, and the probability is that she got
+away out of England and carried herself and the memory of her crime to
+some land beyond the seas."
+
+
+
+
+Adventure VI. The Reigate Puzzle
+
+
+It was some time before the health of my friend Mr. Sherlock Holmes
+recovered from the strain caused by his immense exertions in the spring
+of '87. The whole question of the Netherland-Sumatra Company and of the
+colossal schemes of Baron Maupertuis are too recent in the minds of the
+public, and are too intimately concerned with politics and finance to be
+fitting subjects for this series of sketches. They led, however, in an
+indirect fashion to a singular and complex problem which gave my friend
+an opportunity of demonstrating the value of a fresh weapon among the
+many with which he waged his life-long battle against crime.
+
+On referring to my notes I see that it was upon the 14th of April that
+I received a telegram from Lyons which informed me that Holmes was
+lying ill in the Hotel Dulong. Within twenty-four hours I was in his
+sick-room, and was relieved to find that there was nothing formidable in
+his symptoms. Even his iron constitution, however, had broken down
+under the strain of an investigation which had extended over two months,
+during which period he had never worked less than fifteen hours a day,
+and had more than once, as he assured me, kept to his task for five days
+at a stretch. Even the triumphant issue of his labors could not save him
+from reaction after so terrible an exertion, and at a time when Europe
+was ringing with his name and when his room was literally ankle-deep
+with congratulatory telegrams I found him a prey to the blackest
+depression. Even the knowledge that he had succeeded where the police of
+three countries had failed, and that he had outmanoeuvred at every point
+the most accomplished swindler in Europe, was insufficient to rouse him
+from his nervous prostration.
+
+Three days later we were back in Baker Street together; but it was
+evident that my friend would be much the better for a change, and the
+thought of a week of spring time in the country was full of attractions
+to me also. My old friend, Colonel Hayter, who had come under my
+professional care in Afghanistan, had now taken a house near Reigate in
+Surrey, and had frequently asked me to come down to him upon a visit. On
+the last occasion he had remarked that if my friend would only come
+with me he would be glad to extend his hospitality to him also. A little
+diplomacy was needed, but when Holmes understood that the establishment
+was a bachelor one, and that he would be allowed the fullest freedom,
+he fell in with my plans and a week after our return from Lyons we were
+under the Colonel's roof. Hayter was a fine old soldier who had seen
+much of the world, and he soon found, as I had expected, that Holmes and
+he had much in common.
+
+On the evening of our arrival we were sitting in the Colonel's gun-room
+after dinner, Holmes stretched upon the sofa, while Hayter and I looked
+over his little armory of Eastern weapons.
+
+"By the way," said he suddenly, "I think I'll take one of these pistols
+upstairs with me in case we have an alarm."
+
+"An alarm!" said I.
+
+"Yes, we've had a scare in this part lately. Old Acton, who is one of
+our county magnates, had his house broken into last Monday. No great
+damage done, but the fellows are still at large."
+
+"No clue?" asked Holmes, cocking his eye at the Colonel.
+
+"None as yet. But the affair is a petty one, one of our little country
+crimes, which must seem too small for your attention, Mr. Holmes, after
+this great international affair."
+
+Holmes waved away the compliment, though his smile showed that it had
+pleased him.
+
+"Was there any feature of interest?"
+
+"I fancy not. The thieves ransacked the library and got very little for
+their pains. The whole place was turned upside down, drawers burst open,
+and presses ransacked, with the result that an odd volume of Pope's
+'Homer,' two plated candlesticks, an ivory letter-weight, a small oak
+barometer, and a ball of twine are all that have vanished."
+
+"What an extraordinary assortment!" I exclaimed.
+
+"Oh, the fellows evidently grabbed hold of everything they could get."
+
+Holmes grunted from the sofa.
+
+"The county police ought to make something of that," said he; "why, it
+is surely obvious that--"
+
+But I held up a warning finger.
+
+"You are here for a rest, my dear fellow. For Heaven's sake don't get
+started on a new problem when your nerves are all in shreds."
+
+Holmes shrugged his shoulders with a glance of comic resignation towards
+the Colonel, and the talk drifted away into less dangerous channels.
+
+It was destined, however, that all my professional caution should be
+wasted, for next morning the problem obtruded itself upon us in such a
+way that it was impossible to ignore it, and our country visit took a
+turn which neither of us could have anticipated. We were at breakfast
+when the Colonel's butler rushed in with all his propriety shaken out of
+him.
+
+"Have you heard the news, sir?" he gasped. "At the Cunningham's sir!"
+
+"Burglary!" cried the Colonel, with his coffee-cup in mid-air.
+
+"Murder!"
+
+The Colonel whistled. "By Jove!" said he. "Who's killed, then? The J.P.
+or his son?"
+
+"Neither, sir. It was William the coachman. Shot through the heart, sir,
+and never spoke again."
+
+"Who shot him, then?"
+
+"The burglar, sir. He was off like a shot and got clean away. He'd just
+broke in at the pantry window when William came on him and met his end
+in saving his master's property."
+
+"What time?"
+
+"It was last night, sir, somewhere about twelve."
+
+"Ah, then, we'll step over afterwards," said the Colonel, coolly
+settling down to his breakfast again. "It's a baddish business," he
+added when the butler had gone; "he's our leading man about here, is old
+Cunningham, and a very decent fellow too. He'll be cut up over this, for
+the man has been in his service for years and was a good servant. It's
+evidently the same villains who broke into Acton's."
+
+"And stole that very singular collection," said Holmes, thoughtfully.
+
+"Precisely."
+
+"Hum! It may prove the simplest matter in the world, but all the same
+at first glance this is just a little curious, is it not? A gang of
+burglars acting in the country might be expected to vary the scene of
+their operations, and not to crack two cribs in the same district within
+a few days. When you spoke last night of taking precautions I remember
+that it passed through my mind that this was probably the last parish
+in England to which the thief or thieves would be likely to turn their
+attention--which shows that I have still much to learn."
+
+"I fancy it's some local practitioner," said the Colonel. "In that case,
+of course, Acton's and Cunningham's are just the places he would go for,
+since they are far the largest about here."
+
+"And richest?"
+
+"Well, they ought to be, but they've had a lawsuit for some years which
+has sucked the blood out of both of them, I fancy. Old Acton has some
+claim on half Cunningham's estate, and the lawyers have been at it with
+both hands."
+
+"If it's a local villain there should not be much difficulty in running
+him down," said Holmes with a yawn. "All right, Watson, I don't intend
+to meddle."
+
+"Inspector Forrester, sir," said the butler, throwing open the door.
+
+The official, a smart, keen-faced young fellow, stepped into the room.
+"Good-morning, Colonel," said he; "I hope I don't intrude, but we hear
+that Mr. Holmes of Baker Street is here."
+
+The Colonel waved his hand towards my friend, and the Inspector bowed.
+
+"We thought that perhaps you would care to step across, Mr. Holmes."
+
+"The fates are against you, Watson," said he, laughing. "We were
+chatting about the matter when you came in, Inspector. Perhaps you
+can let us have a few details." As he leaned back in his chair in the
+familiar attitude I knew that the case was hopeless.
+
+"We had no clue in the Acton affair. But here we have plenty to go on,
+and there's no doubt it is the same party in each case. The man was
+seen."
+
+"Ah!"
+
+"Yes, sir. But he was off like a deer after the shot that killed poor
+William Kirwan was fired. Mr. Cunningham saw him from the bedroom
+window, and Mr. Alec Cunningham saw him from the back passage. It was
+quarter to twelve when the alarm broke out. Mr. Cunningham had just got
+into bed, and Mr. Alec was smoking a pipe in his dressing-gown. They
+both heard William the coachman calling for help, and Mr. Alec ran down
+to see what was the matter. The back door was open, and as he came to
+the foot of the stairs he saw two men wrestling together outside. One of
+them fired a shot, the other dropped, and the murderer rushed across the
+garden and over the hedge. Mr. Cunningham, looking out of his bedroom,
+saw the fellow as he gained the road, but lost sight of him at once. Mr.
+Alec stopped to see if he could help the dying man, and so the villain
+got clean away. Beyond the fact that he was a middle-sized man and
+dressed in some dark stuff, we have no personal clue; but we are making
+energetic inquiries, and if he is a stranger we shall soon find him
+out."
+
+"What was this William doing there? Did he say anything before he died?"
+
+"Not a word. He lives at the lodge with his mother, and as he was a
+very faithful fellow we imagine that he walked up to the house with
+the intention of seeing that all was right there. Of course this Acton
+business has put every one on their guard. The robber must have just
+burst open the door--the lock has been forced--when William came upon
+him."
+
+"Did William say anything to his mother before going out?"
+
+"She is very old and deaf, and we can get no information from her. The
+shock has made her half-witted, but I understand that she was never
+very bright. There is one very important circumstance, however. Look at
+this!"
+
+He took a small piece of torn paper from a note-book and spread it out
+upon his knee.
+
+"This was found between the finger and thumb of the dead man. It appears
+to be a fragment torn from a larger sheet. You will observe that the
+hour mentioned upon it is the very time at which the poor fellow met his
+fate. You see that his murderer might have torn the rest of the sheet
+from him or he might have taken this fragment from the murderer. It
+reads almost as though it were an appointment."
+
+Holmes took up the scrap of paper, a fac-simile of which is here
+reproduced.
+
+     d at quarter to twelve learn what maybe
+
+"Presuming that it is an appointment," continued the Inspector, "it is
+of course a conceivable theory that this William Kirwan--though he had
+the reputation of being an honest man, may have been in league with the
+thief. He may have met him there, may even have helped him to break in
+the door, and then they may have fallen out between themselves."
+
+"This writing is of extraordinary interest," said Holmes, who had been
+examining it with intense concentration. "These are much deeper waters
+than I had thought." He sank his head upon his hands, while the Inspector
+smiled at the effect which his case had had upon the famous London
+specialist.
+
+"Your last remark," said Holmes, presently, "as to the possibility of
+there being an understanding between the burglar and the servant, and
+this being a note of appointment from one to the other, is an ingenious
+and not entirely impossible supposition. But this writing opens up--" He
+sank his head into his hands again and remained for some minutes in the
+deepest thought. When he raised his face again, I was surprised to see
+that his cheek was tinged with color, and his eyes as bright as before
+his illness. He sprang to his feet with all his old energy.
+
+"I'll tell you what," said he, "I should like to have a quiet little
+glance into the details of this case. There is something in it which
+fascinates me extremely. If you will permit me, Colonel, I will leave my
+friend Watson and you, and I will step round with the Inspector to test
+the truth of one or two little fancies of mine. I will be with you again
+in half an hour."
+
+An hour and half had elapsed before the Inspector returned alone.
+
+"Mr. Holmes is walking up and down in the field outside," said he. "He
+wants us all four to go up to the house together."
+
+"To Mr. Cunningham's?"
+
+"Yes, sir."
+
+"What for?"
+
+The Inspector shrugged his shoulders. "I don't quite know, sir. Between
+ourselves, I think Mr. Holmes had not quite got over his illness yet.
+He's been behaving very queerly, and he is very much excited."
+
+"I don't think you need alarm yourself," said I. "I have usually found
+that there was method in his madness."
+
+"Some folks might say there was madness in his method," muttered the
+Inspector. "But he's all on fire to start, Colonel, so we had best go
+out if you are ready."
+
+We found Holmes pacing up and down in the field, his chin sunk upon his
+breast, and his hands thrust into his trousers pockets.
+
+"The matter grows in interest," said he. "Watson, your country-trip has
+been a distinct success. I have had a charming morning."
+
+"You have been up to the scene of the crime, I understand," said the
+Colonel.
+
+"Yes; the Inspector and I have made quite a little reconnaissance
+together."
+
+"Any success?"
+
+"Well, we have seen some very interesting things. I'll tell you what we
+did as we walk. First of all, we saw the body of this unfortunate man.
+He certainly died from a revolver wound as reported."
+
+"Had you doubted it, then?"
+
+"Oh, it is as well to test everything. Our inspection was not wasted. We
+then had an interview with Mr. Cunningham and his son, who were able
+to point out the exact spot where the murderer had broken through the
+garden-hedge in his flight. That was of great interest."
+
+"Naturally."
+
+"Then we had a look at this poor fellow's mother. We could get no
+information from her, however, as she is very old and feeble."
+
+"And what is the result of your investigations?"
+
+"The conviction that the crime is a very peculiar one. Perhaps our visit
+now may do something to make it less obscure. I think that we are both
+agreed, Inspector that the fragment of paper in the dead man's hand,
+bearing, as it does, the very hour of his death written upon it, is of
+extreme importance."
+
+"It should give a clue, Mr. Holmes."
+
+"It does give a clue. Whoever wrote that note was the man who brought
+William Kirwan out of his bed at that hour. But where is the rest of
+that sheet of paper?"
+
+"I examined the ground carefully in the hope of finding it," said the
+Inspector.
+
+"It was torn out of the dead man's hand. Why was some one so anxious to
+get possession of it? Because it incriminated him. And what would he do
+with it? Thrust it into his pocket, most likely, never noticing that a
+corner of it had been left in the grip of the corpse. If we could get
+the rest of that sheet it is obvious that we should have gone a long way
+towards solving the mystery."
+
+"Yes, but how can we get at the criminal's pocket before we catch the
+criminal?"
+
+"Well, well, it was worth thinking over. Then there is another obvious
+point. The note was sent to William. The man who wrote it could not have
+taken it; otherwise, of course, he might have delivered his own message
+by word of mouth. Who brought the note, then? Or did it come through the
+post?"
+
+"I have made inquiries," said the Inspector. "William received a letter
+by the afternoon post yesterday. The envelope was destroyed by him."
+
+"Excellent!" cried Holmes, clapping the Inspector on the back. "You've
+seen the postman. It is a pleasure to work with you. Well, here is the
+lodge, and if you will come up, Colonel, I will show you the scene of
+the crime."
+
+We passed the pretty cottage where the murdered man had lived, and
+walked up an oak-lined avenue to the fine old Queen Anne house, which
+bears the date of Malplaquet upon the lintel of the door. Holmes and
+the Inspector led us round it until we came to the side gate, which is
+separated by a stretch of garden from the hedge which lines the road. A
+constable was standing at the kitchen door.
+
+"Throw the door open, officer," said Holmes. "Now, it was on those
+stairs that young Mr. Cunningham stood and saw the two men struggling
+just where we are. Old Mr. Cunningham was at that window--the second on
+the left--and he saw the fellow get away just to the left of that bush.
+Then Mr. Alec ran out and knelt beside the wounded man. The ground is
+very hard, you see, and there are no marks to guide us." As he spoke two
+men came down the garden path, from round the angle of the house. The
+one was an elderly man, with a strong, deep-lined, heavy-eyed face; the
+other a dashing young fellow, whose bright, smiling expression and showy
+dress were in strange contract with the business which had brought us
+there.
+
+"Still at it, then?" said he to Holmes. "I thought you Londoners were
+never at fault. You don't seem to be so very quick, after all."
+
+"Ah, you must give us a little time," said Holmes good-humoredly.
+
+"You'll want it," said young Alec Cunningham. "Why, I don't see that we
+have any clue at all."
+
+"There's only one," answered the Inspector. "We thought that if we could
+only find--Good heavens, Mr. Holmes! What is the matter?"
+
+My poor friend's face had suddenly assumed the most dreadful expression.
+His eyes rolled upwards, his features writhed in agony, and with a
+suppressed groan he dropped on his face upon the ground. Horrified
+at the suddenness and severity of the attack, we carried him into the
+kitchen, where he lay back in a large chair, and breathed heavily for
+some minutes. Finally, with a shamefaced apology for his weakness, he
+rose once more.
+
+"Watson would tell you that I have only just recovered from a severe
+illness," he explained. "I am liable to these sudden nervous attacks."
+
+"Shall I send you home in my trap?" asked old Cunningham.
+
+"Well, since I am here, there is one point on which I should like to
+feel sure. We can very easily verify it."
+
+"What was it?"
+
+"Well, it seems to me that it is just possible that the arrival of
+this poor fellow William was not before, but after, the entrance of
+the burglary into the house. You appear to take it for granted that,
+although the door was forced, the robber never got in."
+
+"I fancy that is quite obvious," said Mr. Cunningham, gravely. "Why, my
+son Alec had not yet gone to bed, and he would certainly have heard any
+one moving about."
+
+"Where was he sitting?"
+
+"I was smoking in my dressing-room."
+
+"Which window is that?"
+
+"The last on the left next my father's."
+
+"Both of your lamps were lit, of course?"
+
+"Undoubtedly."
+
+"There are some very singular points here," said Holmes, smiling. "Is
+it not extraordinary that a burglary--and a burglar who had had some
+previous experience--should deliberately break into a house at a time
+when he could see from the lights that two of the family were still
+afoot?"
+
+"He must have been a cool hand."
+
+"Well, of course, if the case were not an odd one we should not have
+been driven to ask you for an explanation," said young Mr. Alec. "But as
+to your ideas that the man had robbed the house before William tackled
+him, I think it a most absurd notion. Wouldn't we have found the place
+disarranged, and missed the things which he had taken?"
+
+"It depends on what the things were," said Holmes. "You must remember
+that we are dealing with a burglar who is a very peculiar fellow, and
+who appears to work on lines of his own. Look, for example, at the
+queer lot of things which he took from Acton's--what was it?--a ball of
+string, a letter-weight, and I don't know what other odds and ends."
+
+"Well, we are quite in your hands, Mr. Holmes," said old Cunningham.
+"Anything which you or the Inspector may suggest will most certainly be
+done."
+
+"In the first place," said Holmes, "I should like you to offer a
+reward--coming from yourself, for the officials may take a little time
+before they would agree upon the sum, and these things cannot be done
+too promptly. I have jotted down the form here, if you would not mind
+signing it. Fifty pounds was quite enough, I thought."
+
+"I would willingly give five hundred," said the J.P., taking the slip
+of paper and the pencil which Holmes handed to him. "This is not quite
+correct, however," he added, glancing over the document.
+
+"I wrote it rather hurriedly."
+
+"You see you begin, 'Whereas, at about a quarter to one on Tuesday
+morning an attempt was made,' and so on. It was at a quarter to twelve,
+as a matter of fact."
+
+I was pained at the mistake, for I knew how keenly Holmes would feel any
+slip of the kind. It was his specialty to be accurate as to fact, but
+his recent illness had shaken him, and this one little incident was
+enough to show me that he was still far from being himself. He was
+obviously embarrassed for an instant, while the Inspector raised his
+eyebrows, and Alec Cunningham burst into a laugh. The old gentleman
+corrected the mistake, however, and handed the paper back to Holmes.
+
+"Get it printed as soon as possible," he said; "I think your idea is an
+excellent one."
+
+Holmes put the slip of paper carefully away into his pocket-book.
+
+"And now," said he, "it really would be a good thing that we should all
+go over the house together and make certain that this rather erratic
+burglar did not, after all, carry anything away with him."
+
+Before entering, Holmes made an examination of the door which had been
+forced. It was evident that a chisel or strong knife had been thrust
+in, and the lock forced back with it. We could see the marks in the wood
+where it had been pushed in.
+
+"You don't use bars, then?" he asked.
+
+"We have never found it necessary."
+
+"You don't keep a dog?"
+
+"Yes, but he is chained on the other side of the house."
+
+"When do the servants go to bed?"
+
+"About ten."
+
+"I understand that William was usually in bed also at that hour."
+
+"Yes."
+
+"It is singular that on this particular night he should have been up.
+Now, I should be very glad if you would have the kindness to show us
+over the house, Mr. Cunningham."
+
+A stone-flagged passage, with the kitchens branching away from it, led
+by a wooden staircase directly to the first floor of the house. It came
+out upon the landing opposite to a second more ornamental stair which
+came up from the front hall. Out of this landing opened the drawing-room
+and several bedrooms, including those of Mr. Cunningham and his son.
+Holmes walked slowly, taking keen note of the architecture of the house.
+I could tell from his expression that he was on a hot scent, and yet
+I could not in the least imagine in what direction his inferences were
+leading him.
+
+"My good sir," said Mr. Cunningham with some impatience, "this is surely
+very unnecessary. That is my room at the end of the stairs, and my
+son's is the one beyond it. I leave it to your judgment whether it was
+possible for the thief to have come up here without disturbing us."
+
+"You must try round and get on a fresh scent, I fancy," said the son
+with a rather malicious smile.
+
+"Still, I must ask you to humor me a little further. I should like, for
+example, to see how far the windows of the bedrooms command the front.
+This, I understand is your son's room"--he pushed open the door--"and
+that, I presume, is the dressing-room in which he sat smoking when the
+alarm was given. Where does the window of that look out to?" He stepped
+across the bedroom, pushed open the door, and glanced round the other
+chamber.
+
+"I hope that you are satisfied now?" said Mr. Cunningham, tartly.
+
+"Thank you, I think I have seen all that I wished."
+
+"Then if it is really necessary we can go into my room."
+
+"If it is not too much trouble."
+
+The J. P. shrugged his shoulders, and led the way into his own chamber,
+which was a plainly furnished and commonplace room. As we moved across
+it in the direction of the window, Holmes fell back until he and I were
+the last of the group. Near the foot of the bed stood a dish of oranges
+and a carafe of water. As we passed it Holmes, to my unutterable
+astonishment, leaned over in front of me and deliberately knocked the
+whole thing over. The glass smashed into a thousand pieces and the fruit
+rolled about into every corner of the room.
+
+"You've done it now, Watson," said he, coolly. "A pretty mess you've
+made of the carpet."
+
+I stooped in some confusion and began to pick up the fruit,
+understanding for some reason my companion desired me to take the blame
+upon myself. The others did the same, and set the table on its legs
+again.
+
+"Hullo!" cried the Inspector, "where's he got to?"
+
+Holmes had disappeared.
+
+"Wait here an instant," said young Alec Cunningham. "The fellow is off
+his head, in my opinion. Come with me, father, and see where he has got
+to!"
+
+They rushed out of the room, leaving the Inspector, the Colonel, and me
+staring at each other.
+
+"'Pon my word, I am inclined to agree with Master Alec," said the
+official. "It may be the effect of this illness, but it seems to me
+that--"
+
+His words were cut short by a sudden scream of "Help! Help! Murder!"
+With a thrill I recognized the voice of that of my friend. I rushed
+madly from the room on to the landing. The cries, which had sunk down
+into a hoarse, inarticulate shouting, came from the room which we had
+first visited. I dashed in, and on into the dressing-room beyond. The
+two Cunninghams were bending over the prostrate figure of Sherlock
+Holmes, the younger clutching his throat with both hands, while the
+elder seemed to be twisting one of his wrists. In an instant the three
+of us had torn them away from him, and Holmes staggered to his feet,
+very pale and evidently greatly exhausted.
+
+"Arrest these men, Inspector," he gasped.
+
+"On what charge?"
+
+"That of murdering their coachman, William Kirwan."
+
+The Inspector stared about him in bewilderment. "Oh, come now, Mr.
+Holmes," said he at last, "I'm sure you don't really mean to--"
+
+"Tut, man, look at their faces!" cried Holmes, curtly.
+
+Never certainly have I seen a plainer confession of guilt upon human
+countenances. The older man seemed numbed and dazed with a heavy, sullen
+expression upon his strongly-marked face. The son, on the other hand,
+had dropped all that jaunty, dashing style which had characterized him,
+and the ferocity of a dangerous wild beast gleamed in his dark eyes
+and distorted his handsome features. The Inspector said nothing, but,
+stepping to the door, he blew his whistle. Two of his constables came at
+the call.
+
+"I have no alternative, Mr. Cunningham," said he. "I trust that this may
+all prove to be an absurd mistake, but you can see that--Ah, would you?
+Drop it!" He struck out with his hand, and a revolver which the younger
+man was in the act of cocking clattered down upon the floor.
+
+"Keep that," said Holmes, quietly putting his foot upon it; "you will
+find it useful at the trial. But this is what we really wanted." He held
+up a little crumpled piece of paper.
+
+"The remainder of the sheet!" cried the Inspector.
+
+"Precisely."
+
+"And where was it?"
+
+"Where I was sure it must be. I'll make the whole matter clear to you
+presently. I think, Colonel, that you and Watson might return now, and
+I will be with you again in an hour at the furthest. The Inspector and I
+must have a word with the prisoners, but you will certainly see me back
+at luncheon time."
+
+
+Sherlock Holmes was as good as his word, for about one o'clock he
+rejoined us in the Colonel's smoking-room. He was accompanied by a
+little elderly gentleman, who was introduced to me as the Mr. Acton
+whose house had been the scene of the original burglary.
+
+"I wished Mr. Acton to be present while I demonstrated this small matter
+to you," said Holmes, "for it is natural that he should take a keen
+interest in the details. I am afraid, my dear Colonel, that you must
+regret the hour that you took in such a stormy petrel as I am."
+
+"On the contrary," answered the Colonel, warmly, "I consider it the
+greatest privilege to have been permitted to study your methods of
+working. I confess that they quite surpass my expectations, and that I
+am utterly unable to account for your result. I have not yet seen the
+vestige of a clue."
+
+"I am afraid that my explanation may disillusion you but it has always
+been my habit to hide none of my methods, either from my friend Watson
+or from any one who might take an intelligent interest in them. But,
+first, as I am rather shaken by the knocking about which I had in
+the dressing-room, I think that I shall help myself to a dash of your
+brandy, Colonel. My strength had been rather tried of late."
+
+"I trust that you had no more of those nervous attacks."
+
+Sherlock Holmes laughed heartily. "We will come to that in its turn,"
+said he. "I will lay an account of the case before you in its due order,
+showing you the various points which guided me in my decision. Pray
+interrupt me if there is any inference which is not perfectly clear to
+you.
+
+"It is of the highest importance in the art of detection to be able
+to recognize, out of a number of facts, which are incidental and which
+vital. Otherwise your energy and attention must be dissipated instead of
+being concentrated. Now, in this case there was not the slightest doubt
+in my mind from the first that the key of the whole matter must be
+looked for in the scrap of paper in the dead man's hand.
+
+"Before going into this, I would draw your attention to the fact that,
+if Alec Cunningham's narrative was correct, and if the assailant, after
+shooting William Kirwan, had instantly fled, then it obviously could not
+be he who tore the paper from the dead man's hand. But if it was not he,
+it must have been Alec Cunningham himself, for by the time that the old
+man had descended several servants were upon the scene. The point is a
+simple one, but the Inspector had overlooked it because he had started
+with the supposition that these county magnates had had nothing to do
+with the matter. Now, I make a point of never having any prejudices,
+and of following docilely wherever fact may lead me, and so, in the
+very first stage of the investigation, I found myself looking a little
+askance at the part which had been played by Mr. Alec Cunningham.
+
+"And now I made a very careful examination of the corner of paper which
+the Inspector had submitted to us. It was at once clear to me that it
+formed part of a very remarkable document. Here it is. Do you not now
+observe something very suggestive about it?"
+
+"It has a very irregular look," said the Colonel.
+
+"My dear sir," cried Holmes, "there cannot be the least doubt in the
+world that it has been written by two persons doing alternate words.
+When I draw your attention to the strong t's of 'at' and 'to', and ask
+you to compare them with the weak ones of 'quarter' and 'twelve,' you
+will instantly recognize the fact. A very brief analysis of these
+four words would enable you to say with the utmost confidence that the
+'learn' and the 'maybe' are written in the stronger hand, and the 'what'
+in the weaker."
+
+"By Jove, it's as clear as day!" cried the Colonel. "Why on earth should
+two men write a letter in such a fashion?"
+
+"Obviously the business was a bad one, and one of the men who distrusted
+the other was determined that, whatever was done, each should have an
+equal hand in it. Now, of the two men, it is clear that the one who
+wrote the 'at' and 'to' was the ringleader."
+
+"How do you get at that?"
+
+"We might deduce it from the mere character of the one hand as compared
+with the other. But we have more assured reasons than that for supposing
+it. If you examine this scrap with attention you will come to the
+conclusion that the man with the stronger hand wrote all his words
+first, leaving blanks for the other to fill up. These blanks were not
+always sufficient, and you can see that the second man had a squeeze
+to fit his 'quarter' in between the 'at' and the 'to,' showing that the
+latter were already written. The man who wrote all his words first is
+undoubtedly the man who planned the affair."
+
+"Excellent!" cried Mr. Acton.
+
+"But very superficial," said Holmes. "We come now, however, to a point
+which is of importance. You may not be aware that the deduction of a
+man's age from his writing is one which has brought to considerable
+accuracy by experts. In normal cases one can place a man in his true
+decade with tolerable confidence. I say normal cases, because ill-health
+and physical weakness reproduce the signs of old age, even when the
+invalid is a youth. In this case, looking at the bold, strong hand of
+the one, and the rather broken-backed appearance of the other, which
+still retains its legibility although the t's have begun to lose their
+crossing, we can say that the one was a young man and the other was
+advanced in years without being positively decrepit."
+
+"Excellent!" cried Mr. Acton again.
+
+"There is a further point, however, which is subtler and of greater
+interest. There is something in common between these hands. They belong
+to men who are blood-relatives. It may be most obvious to you in the
+Greek e's, but to me there are many small points which indicate the same
+thing. I have no doubt at all that a family mannerism can be traced in
+these two specimens of writing. I am only, of course, giving you
+the leading results now of my examination of the paper. There were
+twenty-three other deductions which would be of more interest to experts
+than to you. They all tend to deepen the impression upon my mind that
+the Cunninghams, father and son, had written this letter.
+
+"Having got so far, my next step was, of course, to examine into the
+details of the crime, and to see how far they would help us. I went up
+to the house with the Inspector, and saw all that was to be seen. The
+wound upon the dead man was, as I was able to determine with absolute
+confidence, fired from a revolver at the distance of something over
+four yards. There was no powder-blackening on the clothes. Evidently,
+therefore, Alec Cunningham had lied when he said that the two men were
+struggling when the shot was fired. Again, both father and son agreed
+as to the place where the man escaped into the road. At that point,
+however, as it happens, there is a broadish ditch, moist at the bottom.
+As there were no indications of bootmarks about this ditch, I was
+absolutely sure not only that the Cunninghams had again lied, but that
+there had never been any unknown man upon the scene at all.
+
+"And now I have to consider the motive of this singular crime. To get
+at this, I endeavored first of all to solve the reason of the original
+burglary at Mr. Acton's. I understood, from something which the Colonel
+told us, that a lawsuit had been going on between you, Mr. Acton, and
+the Cunninghams. Of course, it instantly occurred to me that they had
+broken into your library with the intention of getting at some document
+which might be of importance in the case."
+
+"Precisely so," said Mr. Acton. "There can be no possible doubt as to
+their intentions. I have the clearest claim upon half of their present
+estate, and if they could have found a single paper--which, fortunately,
+was in the strong-box of my solicitors--they would undoubtedly have
+crippled our case."
+
+"There you are," said Holmes, smiling. "It was a dangerous, reckless
+attempt, in which I seem to trace the influence of young Alec. Having
+found nothing they tried to divert suspicion by making it appear to be
+an ordinary burglary, to which end they carried off whatever they could
+lay their hands upon. That is all clear enough, but there was much that
+was still obscure. What I wanted above all was to get the missing part
+of that note. I was certain that Alec had torn it out of the dead man's
+hand, and almost certain that he must have thrust it into the pocket of
+his dressing-gown. Where else could he have put it? The only question
+was whether it was still there. It was worth an effort to find out, and
+for that object we all went up to the house.
+
+"The Cunninghams joined us, as you doubtless remember, outside the
+kitchen door. It was, of course, of the very first importance that they
+should not be reminded of the existence of this paper, otherwise they
+would naturally destroy it without delay. The Inspector was about to
+tell them the importance which we attached to it when, by the luckiest
+chance in the world, I tumbled down in a sort of fit and so changed the
+conversation.
+
+"Good heavens!" cried the Colonel, laughing, "do you mean to say all our
+sympathy was wasted and your fit an imposture?"
+
+"Speaking professionally, it was admirably done," cried I, looking in
+amazement at this man who was forever confounding me with some new phase
+of his astuteness.
+
+"It is an art which is often useful," said he. "When I recovered I
+managed, by a device which had perhaps some little merit of ingenuity,
+to get old Cunningham to write the word 'twelve,' so that I might
+compare it with the 'twelve' upon the paper."
+
+"Oh, what an ass I have been!" I exclaimed.
+
+"I could see that you were commiserating me over my weakness," said
+Holmes, laughing. "I was sorry to cause you the sympathetic pain which
+I know that you felt. We then went upstairs together, and having entered
+the room and seen the dressing-gown hanging up behind the door, I
+contrived, by upsetting a table, to engage their attention for the
+moment, and slipped back to examine the pockets. I had hardly got the
+paper, however--which was, as I had expected, in one of them--when the
+two Cunninghams were on me, and would, I verily believe, have murdered
+me then and there but for your prompt and friendly aid. As it is, I feel
+that young man's grip on my throat now, and the father has twisted my
+wrist round in the effort to get the paper out of my hand. They saw that
+I must know all about it, you see, and the sudden change from absolute
+security to complete despair made them perfectly desperate.
+
+"I had a little talk with old Cunningham afterwards as to the motive of
+the crime. He was tractable enough, though his son was a perfect demon,
+ready to blow out his own or anybody else's brains if he could have got
+to his revolver. When Cunningham saw that the case against him was so
+strong he lost all heart and made a clean breast of everything. It seems
+that William had secretly followed his two masters on the night when
+they made their raid upon Mr. Acton's, and having thus got them into
+his power, proceeded, under threats of exposure, to levy blackmail upon
+them. Mr. Alec, however, was a dangerous man to play games of that
+sort with. It was a stroke of positive genius on his part to see in the
+burglary scare which was convulsing the country side an opportunity of
+plausibly getting rid of the man whom he feared. William was decoyed up
+and shot, and had they only got the whole of the note and paid a little
+more attention to detail in the accessories, it is very possible that
+suspicion might never have been aroused."
+
+"And the note?" I asked.
+
+Sherlock Holmes placed the subjoined paper before us.
+
+     If you will only come around to the east gate you it will
+     very much surprise you and be of the greatest service to you
+     and also to Annie Morrison. But say nothing to anyone upon
+     the matter.
+
+"It is very much the sort of thing that I expected," said he. "Of
+course, we do not yet know what the relations may have been between Alec
+Cunningham, William Kirwan, and Annie Morrison. The results shows that
+the trap was skillfully baited. I am sure that you cannot fail to be
+delighted with the traces of heredity shown in the p's and in the tails
+of the g's. The absence of the i-dots in the old man's writing is also
+most characteristic. Watson, I think our quiet rest in the country has
+been a distinct success, and I shall certainly return much invigorated
+to Baker Street to-morrow."
+
+
+
+
+Adventure VII. The Crooked Man
+
+
+One summer night, a few months after my marriage, I was seated by my own
+hearth smoking a last pipe and nodding over a novel, for my day's work
+had been an exhausting one. My wife had already gone upstairs, and the
+sound of the locking of the hall door some time before told me that the
+servants had also retired. I had risen from my seat and was knocking out
+the ashes of my pipe when I suddenly heard the clang of the bell.
+
+I looked at the clock. It was a quarter to twelve. This could not be
+a visitor at so late an hour. A patient, evidently, and possibly an
+all-night sitting. With a wry face I went out into the hall and opened
+the door. To my astonishment it was Sherlock Holmes who stood upon my
+step.
+
+"Ah, Watson," said he, "I hoped that I might not be too late to catch
+you."
+
+"My dear fellow, pray come in."
+
+"You look surprised, and no wonder! Relieved, too, I fancy! Hum! You
+still smoke the Arcadia mixture of your bachelor days then! There's no
+mistaking that fluffy ash upon your coat. It's easy to tell that you
+have been accustomed to wear a uniform, Watson. You'll never pass as
+a pure-bred civilian as long as you keep that habit of carrying your
+handkerchief in your sleeve. Could you put me up to-night?"
+
+"With pleasure."
+
+"You told me that you had bachelor quarters for one, and I see that you
+have no gentleman visitor at present. Your hat-stand proclaims as much."
+
+"I shall be delighted if you will stay."
+
+"Thank you. I'll fill the vacant peg then. Sorry to see that you've had
+the British workman in the house. He's a token of evil. Not the drains,
+I hope?"
+
+"No, the gas."
+
+"Ah! He has left two nail-marks from his boot upon your linoleum
+just where the light strikes it. No, thank you, I had some supper at
+Waterloo, but I'll smoke a pipe with you with pleasure."
+
+I handed him my pouch, and he seated himself opposite to me and smoked
+for some time in silence. I was well aware that nothing but business
+of importance would have brought him to me at such an hour, so I waited
+patiently until he should come round to it.
+
+"I see that you are professionally rather busy just now," said he,
+glancing very keenly across at me.
+
+"Yes, I've had a busy day," I answered. "It may seem very foolish in
+your eyes," I added, "but really I don't know how you deduced it."
+
+Holmes chuckled to himself.
+
+"I have the advantage of knowing your habits, my dear Watson," said he.
+"When your round is a short one you walk, and when it is a long one you
+use a hansom. As I perceive that your boots, although used, are by
+no means dirty, I cannot doubt that you are at present busy enough to
+justify the hansom."
+
+"Excellent!" I cried.
+
+"Elementary," said he. "It is one of those instances where the reasoner
+can produce an effect which seems remarkable to his neighbor, because
+the latter has missed the one little point which is the basis of the
+deduction. The same may be said, my dear fellow, for the effect of
+some of these little sketches of yours, which is entirely meretricious,
+depending as it does upon your retaining in your own hands some factors
+in the problem which are never imparted to the reader. Now, at present
+I am in the position of these same readers, for I hold in this hand
+several threads of one of the strangest cases which ever perplexed a
+man's brain, and yet I lack the one or two which are needful to complete
+my theory. But I'll have them, Watson, I'll have them!" His eyes kindled
+and a slight flush sprang into his thin cheeks. For an instant only.
+When I glanced again his face had resumed that red-Indian composure
+which had made so many regard him as a machine rather than a man.
+
+"The problem presents features of interest," said he. "I may even say
+exceptional features of interest. I have already looked into the matter,
+and have come, as I think, within sight of my solution. If you could
+accompany me in that last step you might be of considerable service to
+me."
+
+"I should be delighted."
+
+"Could you go as far as Aldershot to-morrow?"
+
+"I have no doubt Jackson would take my practice."
+
+"Very good. I want to start by the 11.10 from Waterloo."
+
+"That would give me time."
+
+"Then, if you are not too sleepy, I will give you a sketch of what has
+happened, and of what remains to be done."
+
+"I was sleepy before you came. I am quite wakeful now."
+
+"I will compress the story as far as may be done without omitting
+anything vital to the case. It is conceivable that you may even have
+read some account of the matter. It is the supposed murder of Colonel
+Barclay, of the Royal Munsters, at Aldershot, which I am investigating."
+
+"I have heard nothing of it."
+
+"It has not excited much attention yet, except locally. The facts are
+only two days old. Briefly they are these:
+
+"The Royal Munsters is, as you know, one of the most famous Irish
+regiments in the British army. It did wonders both in the Crimea and the
+Mutiny, and has since that time distinguished itself upon every possible
+occasion. It was commanded up to Monday night by James Barclay,
+a gallant veteran, who started as a full private, was raised to
+commissioned rank for his bravery at the time of the Mutiny, and so
+lived to command the regiment in which he had once carried a musket.
+
+"Colonel Barclay had married at the time when he was a sergeant, and
+his wife, whose maiden name was Miss Nancy Devoy, was the daughter of a
+former color-sergeant in the same corps. There was, therefore, as can
+be imagined, some little social friction when the young couple (for
+they were still young) found themselves in their new surroundings. They
+appear, however, to have quickly adapted themselves, and Mrs. Barclay
+has always, I understand, been as popular with the ladies of the
+regiment as her husband was with his brother officers. I may add that
+she was a woman of great beauty, and that even now, when she has been
+married for upwards of thirty years, she is still of a striking and
+queenly appearance.
+
+"Colonel Barclay's family life appears to have been a uniformly happy
+one. Major Murphy, to whom I owe most of my facts, assures me that he
+has never heard of any misunderstanding between the pair. On the whole,
+he thinks that Barclay's devotion to his wife was greater than his
+wife's to Barclay. He was acutely uneasy if he were absent from her for
+a day. She, on the other hand, though devoted and faithful, was less
+obtrusively affectionate. But they were regarded in the regiment as
+the very model of a middle-aged couple. There was absolutely nothing in
+their mutual relations to prepare people for the tragedy which was to
+follow.
+
+"Colonel Barclay himself seems to have had some singular traits in his
+character. He was a dashing, jovial old soldier in his usual mood,
+but there were occasions on which he seemed to show himself capable
+of considerable violence and vindictiveness. This side of his nature,
+however, appears never to have been turned towards his wife. Another
+fact, which had struck Major Murphy and three out of five of the other
+officers with whom I conversed, was the singular sort of depression
+which came upon him at times. As the major expressed it, the smile had
+often been struck from his mouth, as if by some invisible hand, when he
+has been joining the gayeties and chaff of the mess-table. For days on
+end, when the mood was on him, he has been sunk in the deepest gloom.
+This and a certain tinge of superstition were the only unusual traits
+in his character which his brother officers had observed. The latter
+peculiarity took the form of a dislike to being left alone, especially
+after dark. This puerile feature in a nature which was conspicuously
+manly had often given rise to comment and conjecture.
+
+"The first battalion of the Royal Munsters (which is the old 117th) has
+been stationed at Aldershot for some years. The married officers live
+out of barracks, and the Colonel has during all this time occupied a
+villa called Lachine, about half a mile from the north camp. The house
+stands in its own grounds, but the west side of it is not more than
+thirty yards from the high-road. A coachman and two maids form the
+staff of servants. These with their master and mistress were the sole
+occupants of Lachine, for the Barclays had no children, nor was it usual
+for them to have resident visitors.
+
+"Now for the events at Lachine between nine and ten on the evening of
+last Monday."
+
+"Mrs. Barclay was, it appears, a member of the Roman Catholic Church,
+and had interested herself very much in the establishment of the Guild
+of St. George, which was formed in connection with the Watt Street
+Chapel for the purpose of supplying the poor with cast-off clothing.
+A meeting of the Guild had been held that evening at eight, and Mrs.
+Barclay had hurried over her dinner in order to be present at it. When
+leaving the house she was heard by the coachman to make some commonplace
+remark to her husband, and to assure him that she would be back before
+very long. She then called for Miss Morrison, a young lady who lives
+in the next villa, and the two went off together to their meeting. It
+lasted forty minutes, and at a quarter-past nine Mrs. Barclay returned
+home, having left Miss Morrison at her door as she passed.
+
+"There is a room which is used as a morning-room at Lachine. This faces
+the road and opens by a large glass folding-door on to the lawn. The
+lawn is thirty yards across, and is only divided from the highway by
+a low wall with an iron rail above it. It was into this room that Mrs.
+Barclay went upon her return. The blinds were not down, for the room was
+seldom used in the evening, but Mrs. Barclay herself lit the lamp and
+then rang the bell, asking Jane Stewart, the house-maid, to bring her
+a cup of tea, which was quite contrary to her usual habits. The Colonel
+had been sitting in the dining-room, but hearing that his wife had
+returned he joined her in the morning-room. The coachman saw him cross
+the hall and enter it. He was never seen again alive.
+
+"The tea which had been ordered was brought up at the end of ten
+minutes; but the maid, as she approached the door, was surprised to
+hear the voices of her master and mistress in furious altercation. She
+knocked without receiving any answer, and even turned the handle, but
+only to find that the door was locked upon the inside. Naturally enough
+she ran down to tell the cook, and the two women with the coachman came
+up into the hall and listened to the dispute which was still raging.
+They all agreed that only two voices were to be heard, those of Barclay
+and of his wife. Barclay's remarks were subdued and abrupt, so that none
+of them were audible to the listeners. The lady's, on the other hand,
+were most bitter, and when she raised her voice could be plainly heard.
+'You coward!' she repeated over and over again. 'What can be done now?
+What can be done now? Give me back my life. I will never so much as
+breathe the same air with you again! You coward! You coward!' Those were
+scraps of her conversation, ending in a sudden dreadful cry in the man's
+voice, with a crash, and a piercing scream from the woman. Convinced
+that some tragedy had occurred, the coachman rushed to the door and
+strove to force it, while scream after scream issued from within. He was
+unable, however, to make his way in, and the maids were too distracted
+with fear to be of any assistance to him. A sudden thought struck him,
+however, and he ran through the hall door and round to the lawn upon
+which the long French windows open. One side of the window was open,
+which I understand was quite usual in the summer-time, and he passed
+without difficulty into the room. His mistress had ceased to scream and
+was stretched insensible upon a couch, while with his feet tilted over
+the side of an arm-chair, and his head upon the ground near the corner
+of the fender, was lying the unfortunate soldier stone dead in a pool of
+his own blood.
+
+"Naturally, the coachman's first thought, on finding that he could do
+nothing for his master, was to open the door. But here an unexpected and
+singular difficulty presented itself. The key was not in the inner side
+of the door, nor could he find it anywhere in the room. He went out
+again, therefore, through the window, and having obtained the help of
+a policeman and of a medical man, he returned. The lady, against whom
+naturally the strongest suspicion rested, was removed to her room, still
+in a state of insensibility. The Colonel's body was then placed upon the
+sofa, and a careful examination made of the scene of the tragedy.
+
+"The injury from which the unfortunate veteran was suffering was found
+to be a jagged cut some two inches long at the back part of his head,
+which had evidently been caused by a violent blow from a blunt weapon.
+Nor was it difficult to guess what that weapon may have been. Upon the
+floor, close to the body, was lying a singular club of hard carved wood
+with a bone handle. The Colonel possessed a varied collection of weapons
+brought from the different countries in which he had fought, and it
+is conjectured by the police that his club was among his trophies. The
+servants deny having seen it before, but among the numerous curiosities
+in the house it is possible that it may have been overlooked. Nothing
+else of importance was discovered in the room by the police, save the
+inexplicable fact that neither upon Mrs. Barclay's person nor upon that
+of the victim nor in any part of the room was the missing key to
+be found. The door had eventually to be opened by a locksmith from
+Aldershot.
+
+"That was the state of things, Watson, when upon the Tuesday morning I,
+at the request of Major Murphy, went down to Aldershot to supplement
+the efforts of the police. I think that you will acknowledge that the
+problem was already one of interest, but my observations soon made me
+realize that it was in truth much more extraordinary than would at first
+sight appear.
+
+"Before examining the room I cross-questioned the servants, but only
+succeeded in eliciting the facts which I have already stated. One other
+detail of interest was remembered by Jane Stewart, the housemaid. You
+will remember that on hearing the sound of the quarrel she descended and
+returned with the other servants. On that first occasion, when she was
+alone, she says that the voices of her master and mistress were sunk
+so low that she could hear hardly anything, and judged by their tones
+rather than their words that they had fallen out. On my pressing her,
+however, she remembered that she heard the word David uttered twice by
+the lady. The point is of the utmost importance as guiding us towards
+the reason of the sudden quarrel. The Colonel's name, you remember, was
+James.
+
+"There was one thing in the case which had made the deepest impression
+both upon the servants and the police. This was the contortion of the
+Colonel's face. It had set, according to their account, into the most
+dreadful expression of fear and horror which a human countenance is
+capable of assuming. More than one person fainted at the mere sight
+of him, so terrible was the effect. It was quite certain that he had
+foreseen his fate, and that it had caused him the utmost horror. This,
+of course, fitted in well enough with the police theory, if the Colonel
+could have seen his wife making a murderous attack upon him. Nor was
+the fact of the wound being on the back of his head a fatal objection to
+this, as he might have turned to avoid the blow. No information could
+be got from the lady herself, who was temporarily insane from an acute
+attack of brain-fever.
+
+"From the police I learned that Miss Morrison, who you remember went out
+that evening with Mrs. Barclay, denied having any knowledge of what it
+was which had caused the ill-humor in which her companion had returned.
+
+"Having gathered these facts, Watson, I smoked several pipes over them,
+trying to separate those which were crucial from others which were
+merely incidental. There could be no question that the most distinctive
+and suggestive point in the case was the singular disappearance of the
+door-key. A most careful search had failed to discover it in the room.
+Therefore it must have been taken from it. But neither the Colonel
+nor the Colonel's wife could have taken it. That was perfectly clear.
+Therefore a third person must have entered the room. And that third
+person could only have come in through the window. It seemed to me that
+a careful examination of the room and the lawn might possibly reveal
+some traces of this mysterious individual. You know my methods, Watson.
+There was not one of them which I did not apply to the inquiry. And it
+ended by my discovering traces, but very different ones from those which
+I had expected. There had been a man in the room, and he had crossed
+the lawn coming from the road. I was able to obtain five very clear
+impressions of his foot-marks: one in the roadway itself, at the point
+where he had climbed the low wall, two on the lawn, and two very faint
+ones upon the stained boards near the window where he had entered.
+He had apparently rushed across the lawn, for his toe-marks were much
+deeper than his heels. But it was not the man who surprised me. It was
+his companion."
+
+"His companion!"
+
+Holmes pulled a large sheet of tissue-paper out of his pocket and
+carefully unfolded it upon his knee.
+
+"What do you make of that?" he asked.
+
+The paper was covered with he tracings of the foot-marks of some small
+animal. It had five well-marked foot-pads, an indication of long nails,
+and the whole print might be nearly as large as a dessert-spoon.
+
+"It's a dog," said I.
+
+"Did you ever hear of a dog running up a curtain? I found distinct
+traces that this creature had done so."
+
+"A monkey, then?"
+
+"But it is not the print of a monkey."
+
+"What can it be, then?"
+
+"Neither dog nor cat nor monkey nor any creature that we are familiar
+with. I have tried to reconstruct it from the measurements. Here are
+four prints where the beast has been standing motionless. You see that
+it is no less than fifteen inches from fore-foot to hind. Add to that
+the length of neck and head, and you get a creature not much less than
+two feet long--probably more if there is any tail. But now observe this
+other measurement. The animal has been moving, and we have the length
+of its stride. In each case it is only about three inches. You have an
+indication, you see, of a long body with very short legs attached to it.
+It has not been considerate enough to leave any of its hair behind it.
+But its general shape must be what I have indicated, and it can run up a
+curtain, and it is carnivorous."
+
+"How do you deduce that?"
+
+"Because it ran up the curtain. A canary's cage was hanging in the
+window, and its aim seems to have been to get at the bird."
+
+"Then what was the beast?"
+
+"Ah, if I could give it a name it might go a long way towards solving
+the case. On the whole, it was probably some creature of the weasel and
+stoat tribe--and yet it is larger than any of these that I have seen."
+
+"But what had it to do with the crime?"
+
+"That, also, is still obscure. But we have learned a good deal, you
+perceive. We know that a man stood in the road looking at the quarrel
+between the Barclays--the blinds were up and the room lighted. We know,
+also, that he ran across the lawn, entered the room, accompanied by a
+strange animal, and that he either struck the Colonel or, as is equally
+possible, that the Colonel fell down from sheer fright at the sight of
+him, and cut his head on the corner of the fender. Finally, we have the
+curious fact that the intruder carried away the key with him when he
+left."
+
+"Your discoveries seem to have left the business more obscure that it
+was before," said I.
+
+"Quite so. They undoubtedly showed that the affair was much deeper than
+was at first conjectured. I thought the matter over, and I came to
+the conclusion that I must approach the case from another aspect. But
+really, Watson, I am keeping you up, and I might just as well tell you
+all this on our way to Aldershot to-morrow."
+
+"Thank you, you have gone rather too far to stop."
+
+"It is quite certain that when Mrs. Barclay left the house at half-past
+seven she was on good terms with her husband. She was never, as I think
+I have said, ostentatiously affectionate, but she was heard by the
+coachman chatting with the Colonel in a friendly fashion. Now, it was
+equally certain that, immediately on her return, she had gone to the
+room in which she was least likely to see her husband, had flown to tea
+as an agitated woman will, and finally, on his coming in to her, had
+broken into violent recriminations. Therefore something had occurred
+between seven-thirty and nine o'clock which had completely altered her
+feelings towards him. But Miss Morrison had been with her during the
+whole of that hour and a half. It was absolutely certain, therefore, in
+spite of her denial, that she must know something of the matter.
+
+"My first conjecture was, that possibly there had been some passages
+between this young lady and the old soldier, which the former had now
+confessed to the wife. That would account for the angry return, and
+also for the girl's denial that anything had occurred. Nor would it be
+entirely incompatible with most of the words overhead. But there was the
+reference to David, and there was the known affection of the Colonel for
+his wife, to weigh against it, to say nothing of the tragic intrusion
+of this other man, which might, of course, be entirely disconnected with
+what had gone before. It was not easy to pick one's steps, but, on the
+whole, I was inclined to dismiss the idea that there had been anything
+between the Colonel and Miss Morrison, but more than ever convinced that
+the young lady held the clue as to what it was which had turned Mrs.
+Barclay to hatred of her husband. I took the obvious course, therefore,
+of calling upon Miss M., of explaining to her that I was perfectly
+certain that she held the facts in her possession, and of assuring her
+that her friend, Mrs. Barclay, might find herself in the dock upon a
+capital charge unless the matter were cleared up.
+
+"Miss Morrison is a little ethereal slip of a girl, with timid eyes
+and blond hair, but I found her by no means wanting in shrewdness and
+common-sense. She sat thinking for some time after I had spoken, and
+then, turning to me with a brisk air of resolution, she broke into a
+remarkable statement which I will condense for your benefit.
+
+"'I promised my friend that I would say nothing of the matter, and a
+promise is a promise,' said she; 'but if I can really help her when
+so serious a charge is laid against her, and when her own mouth, poor
+darling, is closed by illness, then I think I am absolved from my
+promise. I will tell you exactly what happened upon Monday evening.
+
+"'We were returning from the Watt Street Mission about a quarter to nine
+o'clock. On our way we had to pass through Hudson Street, which is
+a very quiet thoroughfare. There is only one lamp in it, upon the
+left-hand side, and as we approached this lamp I saw a man coming
+towards us with his back very bent, and something like a box slung over
+one of his shoulders. He appeared to be deformed, for he carried his
+head low and walked with his knees bent. We were passing him when he
+raised his face to look at us in the circle of light thrown by the lamp,
+and as he did so he stopped and screamed out in a dreadful voice, "My
+God, it's Nancy!" Mrs. Barclay turned as white as death, and would have
+fallen down had the dreadful-looking creature not caught hold of her. I
+was going to call for the police, but she, to my surprise, spoke quite
+civilly to the fellow.
+
+"'"I thought you had been dead this thirty years, Henry," said she, in a
+shaking voice.
+
+"'"So I have," said he, and it was awful to hear the tones that he said
+it in. He had a very dark, fearsome face, and a gleam in his eyes that
+comes back to me in my dreams. His hair and whiskers were shot with
+gray, and his face was all crinkled and puckered like a withered apple.
+
+"'"Just walk on a little way, dear," said Mrs. Barclay; "I want to have
+a word with this man. There is nothing to be afraid of." She tried to
+speak boldly, but she was still deadly pale and could hardly get her
+words out for the trembling of her lips.
+
+"'I did as she asked me, and they talked together for a few minutes.
+Then she came down the street with her eyes blazing, and I saw the
+crippled wretch standing by the lamp-post and shaking his clenched fists
+in the air as if he were mad with rage. She never said a word until we
+were at the door here, when she took me by the hand and begged me to
+tell no one what had happened.
+
+"'"It's an old acquaintance of mine who has come down in the world,"
+said she. When I promised her I would say nothing she kissed me, and I
+have never seen her since. I have told you now the whole truth, and if
+I withheld it from the police it is because I did not realize then the
+danger in which my dear friend stood. I know that it can only be to her
+advantage that everything should be known.'
+
+"There was her statement, Watson, and to me, as you can imagine, it was
+like a light on a dark night. Everything which had been disconnected
+before began at once to assume its true place, and I had a shadowy
+presentiment of the whole sequence of events. My next step obviously was
+to find the man who had produced such a remarkable impression upon Mrs.
+Barclay. If he were still in Aldershot it should not be a very difficult
+matter. There are not such a very great number of civilians, and a
+deformed man was sure to have attracted attention. I spent a day in the
+search, and by evening--this very evening, Watson--I had run him down.
+The man's name is Henry Wood, and he lives in lodgings in this same
+street in which the ladies met him. He has only been five days in the
+place. In the character of a registration-agent I had a most interesting
+gossip with his landlady. The man is by trade a conjurer and performer,
+going round the canteens after nightfall, and giving a little
+entertainment at each. He carries some creature about with him in that
+box; about which the landlady seemed to be in considerable trepidation,
+for she had never seen an animal like it. He uses it in some of his
+tricks according to her account. So much the woman was able to tell me,
+and also that it was a wonder the man lived, seeing how twisted he was,
+and that he spoke in a strange tongue sometimes, and that for the last
+two nights she had heard him groaning and weeping in his bedroom. He
+was all right, as far as money went, but in his deposit he had given her
+what looked like a bad florin. She showed it to me, Watson, and it was
+an Indian rupee.
+
+"So now, my dear fellow, you see exactly how we stand and why it is I
+want you. It is perfectly plain that after the ladies parted from this
+man he followed them at a distance, that he saw the quarrel between
+husband and wife through the window, that he rushed in, and that
+the creature which he carried in his box got loose. That is all very
+certain. But he is the only person in this world who can tell us exactly
+what happened in that room."
+
+"And you intend to ask him?"
+
+"Most certainly--but in the presence of a witness."
+
+"And I am the witness?"
+
+"If you will be so good. If he can clear the matter up, well and good.
+If he refuses, we have no alternative but to apply for a warrant."
+
+"But how do you know he'll be there when we return?"
+
+"You may be sure that I took some precautions. I have one of my Baker
+Street boys mounting guard over him who would stick to him like a burr,
+go where he might. We shall find him in Hudson Street to-morrow, Watson,
+and meanwhile I should be the criminal myself if I kept you out of bed
+any longer."
+
+It was midday when we found ourselves at the scene of the tragedy, and,
+under my companion's guidance, we made our way at once to Hudson Street.
+In spite of his capacity for concealing his emotions, I could easily see
+that Holmes was in a state of suppressed excitement, while I was myself
+tingling with that half-sporting, half-intellectual pleasure which
+I invariably experienced when I associated myself with him in his
+investigations.
+
+"This is the street," said he, as we turned into a short thoroughfare
+lined with plain two-storied brick houses. "Ah, here is Simpson to
+report."
+
+"He's in all right, Mr. Holmes," cried a small street Arab, running up
+to us.
+
+"Good, Simpson!" said Holmes, patting him on the head. "Come along,
+Watson. This is the house." He sent in his card with a message that he
+had come on important business, and a moment later we were face to face
+with the man whom we had come to see. In spite of the warm weather he
+was crouching over a fire, and the little room was like an oven. The
+man sat all twisted and huddled in his chair in a way which gave an
+indescribably impression of deformity; but the face which he turned
+towards us, though worn and swarthy, must at some time have been
+remarkable for its beauty. He looked suspiciously at us now out of
+yellow-shot, bilious eyes, and, without speaking or rising, he waved
+towards two chairs.
+
+"Mr. Henry Wood, late of India, I believe," said Holmes, affably. "I've
+come over this little matter of Colonel Barclay's death."
+
+"What should I know about that?"
+
+"That's what I want to ascertain. You know, I suppose, that unless the
+matter is cleared up, Mrs. Barclay, who is an old friend of yours, will
+in all probability be tried for murder."
+
+The man gave a violent start.
+
+"I don't know who you are," he cried, "nor how you come to know what you
+do know, but will you swear that this is true that you tell me?"
+
+"Why, they are only waiting for her to come to her senses to arrest
+her."
+
+"My God! Are you in the police yourself?"
+
+"No."
+
+"What business is it of yours, then?"
+
+"It's every man's business to see justice done."
+
+"You can take my word that she is innocent."
+
+"Then you are guilty."
+
+"No, I am not."
+
+"Who killed Colonel James Barclay, then?"
+
+"It was a just providence that killed him. But, mind you this, that if
+I had knocked his brains out, as it was in my heart to do, he would have
+had no more than his due from my hands. If his own guilty conscience had
+not struck him down it is likely enough that I might have had his blood
+upon my soul. You want me to tell the story. Well, I don't know why I
+shouldn't, for there's no cause for me to be ashamed of it.
+
+"It was in this way, sir. You see me now with my back like a camel and
+my ribs all awry, but there was a time when Corporal Henry Wood was the
+smartest man in the 117th foot. We were in India then, in cantonments,
+at a place we'll call Bhurtee. Barclay, who died the other day, was
+sergeant in the same company as myself, and the belle of the regiment,
+ay, and the finest girl that ever had the breath of life between her
+lips, was Nancy Devoy, the daughter of the color-sergeant. There were
+two men that loved her, and one that she loved, and you'll smile when
+you look at this poor thing huddled before the fire, and hear me say
+that it was for my good looks that she loved me.
+
+"Well, though I had her heart, her father was set upon her marrying
+Barclay. I was a harum-scarum, reckless lad, and he had had an
+education, and was already marked for the sword-belt. But the girl held
+true to me, and it seemed that I would have had her when the Mutiny
+broke out, and all hell was loose in the country.
+
+"We were shut up in Bhurtee, the regiment of us with half a battery of
+artillery, a company of Sikhs, and a lot of civilians and women-folk.
+There were ten thousand rebels round us, and they were as keen as a set
+of terriers round a rat-cage. About the second week of it our water gave
+out, and it was a question whether we could communicate with General
+Neill's column, which was moving up country. It was our only chance, for
+we could not hope to fight our way out with all the women and children,
+so I volunteered to go out and to warn General Neill of our danger. My
+offer was accepted, and I talked it over with Sergeant Barclay, who was
+supposed to know the ground better than any other man, and who drew up
+a route by which I might get through the rebel lines. At ten o'clock the
+same night I started off upon my journey. There were a thousand lives to
+save, but it was of only one that I was thinking when I dropped over the
+wall that night.
+
+"My way ran down a dried-up watercourse, which we hoped would screen
+me from the enemy's sentries; but as I crept round the corner of it
+I walked right into six of them, who were crouching down in the dark
+waiting for me. In an instant I was stunned with a blow and bound hand
+and foot. But the real blow was to my heart and not to my head, for as
+I came to and listened to as much as I could understand of their talk,
+I heard enough to tell me that my comrade, the very man who had arranged
+the way that I was to take, had betrayed me by means of a native servant
+into the hands of the enemy.
+
+"Well, there's no need for me to dwell on that part of it. You know now
+what James Barclay was capable of. Bhurtee was relieved by Neill next
+day, but the rebels took me away with them in their retreat, and it was
+many a long year before ever I saw a white face again. I was tortured
+and tried to get away, and was captured and tortured again. You can see
+for yourselves the state in which I was left. Some of them that fled
+into Nepaul took me with them, and then afterwards I was up past
+Darjeeling. The hill-folk up there murdered the rebels who had me, and
+I became their slave for a time until I escaped; but instead of going
+south I had to go north, until I found myself among the Afghans. There
+I wandered about for many a year, and at last came back to the Punjab,
+where I lived mostly among the natives and picked up a living by the
+conjuring tricks that I had learned. What use was it for me, a wretched
+cripple, to go back to England or to make myself known to my old
+comrades? Even my wish for revenge would not make me do that. I had
+rather that Nancy and my old pals should think of Harry Wood as having
+died with a straight back, than see him living and crawling with a stick
+like a chimpanzee. They never doubted that I was dead, and I meant that
+they never should. I heard that Barclay had married Nancy, and that he
+was rising rapidly in the regiment, but even that did not make me speak.
+
+"But when one gets old one has a longing for home. For years I've been
+dreaming of the bright green fields and the hedges of England. At last I
+determined to see them before I died. I saved enough to bring me across,
+and then I came here where the soldiers are, for I know their ways and
+how to amuse them and so earn enough to keep me."
+
+"Your narrative is most interesting," said Sherlock Holmes. "I have
+already heard of your meeting with Mrs. Barclay, and your mutual
+recognition. You then, as I understand, followed her home and saw
+through the window an altercation between her husband and her, in which
+she doubtless cast his conduct to you in his teeth. Your own feelings
+overcame you, and you ran across the lawn and broke in upon them."
+
+"I did, sir, and at the sight of me he looked as I have never seen a man
+look before, and over he went with his head on the fender. But he was
+dead before he fell. I read death on his face as plain as I can read
+that text over the fire. The bare sight of me was like a bullet through
+his guilty heart."
+
+"And then?"
+
+"Then Nancy fainted, and I caught up the key of the door from her hand,
+intending to unlock it and get help. But as I was doing it it seemed to
+me better to leave it alone and get away, for the thing might look black
+against me, and any way my secret would be out if I were taken. In my
+haste I thrust the key into my pocket, and dropped my stick while I was
+chasing Teddy, who had run up the curtain. When I got him into his box,
+from which he had slipped, I was off as fast as I could run."
+
+"Who's Teddy?" asked Holmes.
+
+The man leaned over and pulled up the front of a kind of hutch in
+the corner. In an instant out there slipped a beautiful reddish-brown
+creature, thin and lithe, with the legs of a stoat, a long, thin nose,
+and a pair of the finest red eyes that ever I saw in an animal's head.
+
+"It's a mongoose," I cried.
+
+"Well, some call them that, and some call them ichneumon," said the
+man. "Snake-catcher is what I call them, and Teddy is amazing quick on
+cobras. I have one here without the fangs, and Teddy catches it every
+night to please the folk in the canteen.
+
+"Any other point, sir?"
+
+"Well, we may have to apply to you again if Mrs. Barclay should prove to
+be in serious trouble."
+
+"In that case, of course, I'd come forward."
+
+"But if not, there is no object in raking up this scandal against a
+dead man, foully as he has acted. You have at least the satisfaction
+of knowing that for thirty years of his life his conscience bitterly
+reproached him for this wicked deed. Ah, there goes Major Murphy on the
+other side of the street. Good-by, Wood. I want to learn if anything has
+happened since yesterday."
+
+We were in time to overtake the major before he reached the corner.
+
+"Ah, Holmes," he said: "I suppose you have heard that all this fuss has
+come to nothing?"
+
+"What then?"
+
+"The inquest is just over. The medical evidence showed conclusively
+that death was due to apoplexy. You see it was quite a simple case after
+all."
+
+"Oh, remarkably superficial," said Holmes, smiling. "Come, Watson, I
+don't think we shall be wanted in Aldershot any more."
+
+"There's one thing," said I, as we walked down to the station. "If the
+husband's name was James, and the other was Henry, what was this talk
+about David?"
+
+"That one word, my dear Watson, should have told me the whole story had
+I been the ideal reasoner which you are so fond of depicting. It was
+evidently a term of reproach."
+
+"Of reproach?"
+
+"Yes; David strayed a little occasionally, you know, and on one occasion
+in the same direction as Sergeant James Barclay. You remember the small
+affair of Uriah and Bathsheba? My biblical knowledge is a trifle rusty,
+I fear, but you will find the story in the first or second of Samuel."
+
+
+
+
+Adventure VIII. The Resident Patient
+
+
+Glancing over the somewhat incoherent series of Memoirs with which I
+have endeavored to illustrate a few of the mental peculiarities of my
+friend Mr. Sherlock Holmes, I have been struck by the difficulty which I
+have experienced in picking out examples which shall in every way answer
+my purpose. For in those cases in which Holmes has performed some tour
+de force of analytical reasoning, and has demonstrated the value of his
+peculiar methods of investigation, the facts themselves have often been
+so slight or so commonplace that I could not feel justified in laying
+them before the public. On the other hand, it has frequently happened
+that he has been concerned in some research where the facts have been of
+the most remarkable and dramatic character, but where the share which he
+has himself taken in determining their causes has been less pronounced
+than I, as his biographer, could wish. The small matter which I have
+chronicled under the heading of "A Study in Scarlet," and that other
+later one connected with the loss of the Gloria Scott, may serve as
+examples of this Scylla and Charybdis which are forever threatening the
+historian. It may be that in the business of which I am now about to
+write the part which my friend played is not sufficiently accentuated;
+and yet the whole train of circumstances is so remarkable that I cannot
+bring myself to omit it entirely from this series.
+
+It had been a close, rainy day in October. Our blinds were half-drawn,
+and Holmes lay curled upon the sofa, reading and re-reading a letter
+which he had received by the morning post. For myself, my term of
+service in India had trained me to stand heat better than cold, and
+a thermometer of 90 was no hardship. But the paper was uninteresting.
+Parliament had risen. Everybody was out of town, and I yearned for the
+glades of the New Forest or the shingle of Southsea. A depleted bank
+account had caused me to postpone my holiday, and as to my companion,
+neither the country nor the sea presented the slightest attraction to
+him. He loved to lie in the very centre of five millions of people, with
+his filaments stretching out and running through them, responsive to
+every little rumor or suspicion of unsolved crime. Appreciation of
+Nature found no place among his many gifts, and his only change was
+when he turned his mind from the evil-doer of the town to track down his
+brother of the country.
+
+Finding that Holmes was too absorbed for conversation, I had tossed
+aside the barren paper, and leaning back in my chair, I fell into a
+brown study. Suddenly my companion's voice broke in upon my thoughts.
+
+"You are right, Watson," said he. "It does seem a very preposterous way
+of settling a dispute."
+
+"Most preposterous!" I exclaimed, and then, suddenly realizing how
+he had echoed the inmost thought of my soul, I sat up in my chair and
+stared at him in blank amazement.
+
+"What is this, Holmes?" I cried. "This is beyond anything which I could
+have imagined."
+
+He laughed heartily at my perplexity.
+
+"You remember," said he, "that some little time ago, when I read you the
+passage in one of Poe's sketches, in which a close reasoner follows the
+unspoken thought of his companion, you were inclined to treat the
+matter as a mere tour de force of the author. On my remarking that I
+was constantly in the habit of doing the same thing you expressed
+incredulity."
+
+"Oh, no!"
+
+"Perhaps not with your tongue, my dear Watson, but certainly with your
+eyebrows. So when I saw you throw down your paper and enter upon a train
+of thought, I was very happy to have the opportunity of reading it
+off, and eventually of breaking into it, as a proof that I had been in
+rapport with you."
+
+But I was still far from satisfied. "In the example which you read to
+me," said I, "the reasoner drew his conclusions from the actions of the
+man whom he observed. If I remember right, he stumbled over a heap
+of stones, looked up at the stars, and so on. But I have been seated
+quietly in my chair, and what clues can I have given you?"
+
+"You do yourself an injustice. The features are given to man as the
+means by which he shall express his emotions, and yours are faithful
+servants."
+
+"Do you mean to say that you read my train of thoughts from my
+features?"
+
+"Your features, and especially your eyes. Perhaps you cannot yourself
+recall how your reverie commenced?"
+
+"No, I cannot."
+
+"Then I will tell you. After throwing down your paper, which was the
+action which drew my attention to you, you sat for half a minute with
+a vacant expression. Then your eyes fixed themselves upon your
+newly-framed picture of General Gordon, and I saw by the alteration in
+your face that a train of thought had been started. But it did not lead
+very far. Your eyes turned across to the unframed portrait of Henry Ward
+Beecher which stands upon the top of your books. You then glanced up at
+the wall, and of course your meaning was obvious. You were thinking
+that if the portrait were framed it would just cover that bare space and
+correspond with Gordon's picture over there."
+
+"You have followed me wonderfully!" I exclaimed.
+
+"So far I could hardly have gone astray. But now your thoughts went
+back to Beecher, and you looked hard across as if you were studying
+the character in his features. Then your eyes ceased to pucker, but
+you continued to look across, and your face was thoughtful. You were
+recalling the incidents of Beecher's career. I was well aware that you
+could not do this without thinking of the mission which he undertook
+on behalf of the North at the time of the Civil War, for I remember
+you expressing your passionate indignation at the way in which he was
+received by the more turbulent of our people. You felt so strongly about
+it that I knew you could not think of Beecher without thinking of that
+also. When a moment later I saw your eyes wander away from the picture,
+I suspected that your mind had now turned to the Civil War, and when
+I observed that your lips set, your eyes sparkled, and your hands
+clinched, I was positive that you were indeed thinking of the gallantry
+which was shown by both sides in that desperate struggle. But then,
+again, your face grew sadder; you shook your head. You were dwelling
+upon the sadness and horror and useless waste of life. Your hand stole
+towards your own old wound, and a smile quivered on your lips,
+which showed me that the ridiculous side of this method of settling
+international questions had forced itself upon your mind. At this point
+I agreed with you that it was preposterous, and was glad to find that
+all my deductions had been correct."
+
+"Absolutely!" said I. "And now that you have explained it, I confess
+that I am as amazed as before."
+
+"It was very superficial, my dear Watson, I assure you. I should not
+have intruded it upon your attention had you not shown some incredulity
+the other day. But the evening has brought a breeze with it. What do you
+say to a ramble through London?"
+
+I was weary of our little sitting-room and gladly acquiesced. For
+three hours we strolled about together, watching the ever-changing
+kaleidoscope of life as it ebbs and flows through Fleet Street and the
+Strand. His characteristic talk, with its keen observance of detail
+and subtle power of inference held me amused and enthralled. It was ten
+o'clock before we reached Baker Street again. A brougham was waiting at
+our door.
+
+"Hum! A doctor's--general practitioner, I perceive," said Holmes. "Not
+been long in practice, but has had a good deal to do. Come to consult
+us, I fancy! Lucky we came back!"
+
+I was sufficiently conversant with Holmes's methods to be able to follow
+his reasoning, and to see that the nature and state of the various
+medical instruments in the wicker basket which hung in the lamplight
+inside the brougham had given him the data for his swift deduction.
+The light in our window above showed that this late visit was indeed
+intended for us. With some curiosity as to what could have sent a
+brother medico to us at such an hour, I followed Holmes into our
+sanctum.
+
+A pale, taper-faced man with sandy whiskers rose up from a chair by the
+fire as we entered. His age may not have been more than three or four
+and thirty, but his haggard expression and unhealthy hue told of a life
+which has sapped his strength and robbed him of his youth. His manner
+was nervous and shy, like that of a sensitive gentleman, and the thin
+white hand which he laid on the mantelpiece as he rose was that of an
+artist rather than of a surgeon. His dress was quiet and sombre--a black
+frock-coat, dark trousers, and a touch of color about his necktie.
+
+"Good-evening, doctor," said Holmes, cheerily. "I am glad to see that
+you have only been waiting a very few minutes."
+
+"You spoke to my coachman, then?"
+
+"No, it was the candle on the side-table that told me. Pray resume your
+seat and let me know how I can serve you."
+
+"My name is Doctor Percy Trevelyan," said our visitor, "and I live at
+403 Brook Street."
+
+"Are you not the author of a monograph upon obscure nervous lesions?" I
+asked.
+
+His pale cheeks flushed with pleasure at hearing that his work was known
+to me.
+
+"I so seldom hear of the work that I thought it was quite dead," said
+he. "My publishers gave me a most discouraging account of its sale. You
+are yourself, I presume, a medical man?"
+
+"A retired army surgeon."
+
+"My own hobby has always been nervous disease. I should wish to make it
+an absolute specialty, but, of course, a man must take what he can get
+at first. This, however, is beside the question, Mr. Sherlock Holmes,
+and I quite appreciate how valuable your time is. The fact is that a
+very singular train of events has occurred recently at my house in Brook
+Street, and to-night they came to such a head that I felt it was quite
+impossible for me to wait another hour before asking for your advice and
+assistance."
+
+Sherlock Holmes sat down and lit his pipe. "You are very welcome
+to both," said he. "Pray let me have a detailed account of what the
+circumstances are which have disturbed you."
+
+"One or two of them are so trivial," said Dr. Trevelyan, "that really
+I am almost ashamed to mention them. But the matter is so inexplicable,
+and the recent turn which it has taken is so elaborate, that I shall
+lay it all before you, and you shall judge what is essential and what is
+not.
+
+"I am compelled, to begin with, to say something of my own college
+career. I am a London University man, you know, and I am sure that your
+will not think that I am unduly singing my own praises if I say that my
+student career was considered by my professors to be a very promising
+one. After I had graduated I continued to devote myself to research,
+occupying a minor position in King's College Hospital, and I was
+fortunate enough to excite considerable interest by my research into the
+pathology of catalepsy, and finally to win the Bruce Pinkerton prize and
+medal by the monograph on nervous lesions to which your friend has
+just alluded. I should not go too far if I were to say that there was a
+general impression at that time that a distinguished career lay before
+me.
+
+"But the one great stumbling-block lay in my want of capital. As you
+will readily understand, a specialist who aims high is compelled to
+start in one of a dozen streets in the Cavendish Square quarter, all
+of which entail enormous rents and furnishing expenses. Besides this
+preliminary outlay, he must be prepared to keep himself for some years,
+and to hire a presentable carriage and horse. To do this was quite
+beyond my power, and I could only hope that by economy I might in ten
+years' time save enough to enable me to put up my plate. Suddenly,
+however, an unexpected incident opened up quite a new prospect to me.
+
+"This was a visit from a gentleman of the name of Blessington, who was a
+complete stranger to me. He came up to my room one morning, and plunged
+into business in an instant.
+
+"'You are the same Percy Trevelyan who has had so distinguished a career
+and won a great prize lately?' said he.
+
+"I bowed.
+
+"'Answer me frankly,' he continued, 'for you will find it to your
+interest to do so. You have all the cleverness which makes a successful
+man. Have you the tact?'
+
+"I could not help smiling at the abruptness of the question.
+
+"'I trust that I have my share,' I said.
+
+"'Any bad habits? Not drawn towards drink, eh?'
+
+"'Really, sir!' I cried.
+
+"'Quite right! That's all right! But I was bound to ask. With all these
+qualities, why are you not in practice?'
+
+"I shrugged my shoulders.
+
+"'Come, come!' said he, in his bustling way. 'It's the old story. More
+in your brains than in your pocket, eh? What would you say if I were to
+start you in Brook Street?'
+
+"I stared at him in astonishment.
+
+"'Oh, it's for my sake, not for yours,' he cried. 'I'll be perfectly
+frank with you, and if it suits you it will suit me very well. I have a
+few thousands to invest, d'ye see, and I think I'll sink them in you.'
+
+"'But why?' I gasped.
+
+"'Well, it's just like any other speculation, and safer than most.'
+
+"'What am I to do, then?'
+
+"'I'll tell you. I'll take the house, furnish it, pay the maids, and run
+the whole place. All you have to do is just to wear out your chair in
+the consulting-room. I'll let you have pocket-money and everything. Then
+you hand over to me three quarters of what you earn, and you keep the
+other quarter for yourself.'
+
+"This was the strange proposal, Mr. Holmes, with which the man
+Blessington approached me. I won't weary you with the account of how
+we bargained and negotiated. It ended in my moving into the house next
+Lady-day, and starting in practice on very much the same conditions as
+he had suggested. He came himself to live with me in the character of a
+resident patient. His heart was weak, it appears, and he needed constant
+medical supervision. He turned the two best rooms of the first floor
+into a sitting-room and bedroom for himself. He was a man of singular
+habits, shunning company and very seldom going out. His life was
+irregular, but in one respect he was regularity itself. Every evening,
+at the same hour, he walked into the consulting-room, examined the
+books, put down five and three-pence for every guinea that I had earned,
+and carried the rest off to the strong-box in his own room.
+
+"I may say with confidence that he never had occasion to regret his
+speculation. From the first it was a success. A few good cases and the
+reputation which I had won in the hospital brought me rapidly to the
+front, and during the last few years I have made him a rich man.
+
+"So much, Mr. Holmes, for my past history and my relations with Mr.
+Blessington. It only remains for me now to tell you what has occurred to
+bring me here to-night.
+
+"Some weeks ago Mr. Blessington came down to me in, as it seemed to me,
+a state of considerable agitation. He spoke of some burglary which, he
+said, had been committed in the West End, and he appeared, I remember,
+to be quite unnecessarily excited about it, declaring that a day should
+not pass before we should add stronger bolts to our windows and doors.
+For a week he continued to be in a peculiar state of restlessness,
+peering continually out of the windows, and ceasing to take the short
+walk which had usually been the prelude to his dinner. From his manner
+it struck me that he was in mortal dread of something or somebody, but
+when I questioned him upon the point he became so offensive that I was
+compelled to drop the subject. Gradually, as time passed, his fears
+appeared to die away, and he had renewed his former habits, when a fresh
+event reduced him to the pitiable state of prostration in which he now
+lies.
+
+"What happened was this. Two days ago I received the letter which I now
+read to you. Neither address nor date is attached to it.
+
+"'A Russian nobleman who is now resident in England,' it runs, 'would
+be glad to avail himself of the professional assistance of Dr. Percy
+Trevelyan. He has been for some years a victim to cataleptic attacks, on
+which, as is well known, Dr. Trevelyan is an authority. He proposes to
+call at about quarter past six to-morrow evening, if Dr. Trevelyan will
+make it convenient to be at home.'
+
+"This letter interested me deeply, because the chief difficulty in the
+study of catalepsy is the rareness of the disease. You may believe,
+then, that I was in my consulting-room when, at the appointed hour, the
+page showed in the patient.
+
+"He was an elderly man, thin, demure, and commonplace--by no means the
+conception one forms of a Russian nobleman. I was much more struck by
+the appearance of his companion. This was a tall young man, surprisingly
+handsome, with a dark, fierce face, and the limbs and chest of a
+Hercules. He had his hand under the other's arm as they entered, and
+helped him to a chair with a tenderness which one would hardly have
+expected from his appearance.
+
+"'You will excuse my coming in, doctor,' said he to me, speaking English
+with a slight lisp. 'This is my father, and his health is a matter of
+the most overwhelming importance to me.'
+
+"I was touched by this filial anxiety. 'You would, perhaps, care to
+remain during the consultation?' said I.
+
+"'Not for the world,' he cried with a gesture of horror. 'It is more
+painful to me than I can express. If I were to see my father in one of
+these dreadful seizures I am convinced that I should never survive
+it. My own nervous system is an exceptionally sensitive one. With your
+permission, I will remain in the waiting-room while you go into my
+father's case.'
+
+"To this, of course, I assented, and the young man withdrew. The patient
+and I then plunged into a discussion of his case, of which I took
+exhaustive notes. He was not remarkable for intelligence, and his
+answers were frequently obscure, which I attributed to his limited
+acquaintance with our language. Suddenly, however, as I sat writing,
+he ceased to give any answer at all to my inquiries, and on my turning
+towards him I was shocked to see that he was sitting bolt upright in his
+chair, staring at me with a perfectly blank and rigid face. He was again
+in the grip of his mysterious malady.
+
+"My first feeling, as I have just said, was one of pity and horror.
+My second, I fear, was rather one of professional satisfaction. I made
+notes of my patient's pulse and temperature, tested the rigidity of his
+muscles, and examined his reflexes. There was nothing markedly abnormal
+in any of these conditions, which harmonized with my former experiences.
+I had obtained good results in such cases by the inhalation of nitrite
+of amyl, and the present seemed an admirable opportunity of testing
+its virtues. The bottle was downstairs in my laboratory, so leaving my
+patient seated in his chair, I ran down to get it. There was some little
+delay in finding it--five minutes, let us say--and then I returned.
+Imagine my amazement to find the room empty and the patient gone.
+
+"Of course, my first act was to run into the waiting-room. The son had
+gone also. The hall door had been closed, but not shut. My page who
+admits patients is a new boy and by no means quick. He waits downstairs,
+and runs up to show patients out when I ring the consulting-room bell.
+He had heard nothing, and the affair remained a complete mystery. Mr.
+Blessington came in from his walk shortly afterwards, but I did not say
+anything to him upon the subject, for, to tell the truth, I have got in
+the way of late of holding as little communication with him as possible.
+
+"Well, I never thought that I should see anything more of the Russian
+and his son, so you can imagine my amazement when, at the very same hour
+this evening, they both came marching into my consulting-room, just as
+they had done before.
+
+"'I feel that I owe you a great many apologies for my abrupt departure
+yesterday, doctor,' said my patient.
+
+"'I confess that I was very much surprised at it,' said I.
+
+"'Well, the fact is,' he remarked, 'that when I recover from these
+attacks my mind is always very clouded as to all that has gone before. I
+woke up in a strange room, as it seemed to me, and made my way out into
+the street in a sort of dazed way when you were absent.'
+
+"'And I,' said the son, 'seeing my father pass the door of the
+waiting-room, naturally thought that the consultation had come to an
+end. It was not until we had reached home that I began to realize the
+true state of affairs.'
+
+"'Well,' said I, laughing, 'there is no harm done except that you
+puzzled me terribly; so if you, sir, would kindly step into the
+waiting-room I shall be happy to continue our consultation which was
+brought to so abrupt an ending.'
+
+"'For half an hour or so I discussed that old gentleman's symptoms with
+him, and then, having prescribed for him, I saw him go off upon the arm
+of his son.
+
+"I have told you that Mr. Blessington generally chose this hour of the
+day for his exercise. He came in shortly afterwards and passed upstairs.
+An instant later I heard him running down, and he burst into my
+consulting-room like a man who is mad with panic.
+
+"'Who has been in my room?' he cried.
+
+"'No one,' said I.
+
+"'It's a lie! He yelled. 'Come up and look!'
+
+"I passed over the grossness of his language, as he seemed half out of
+his mind with fear. When I went upstairs with him he pointed to several
+footprints upon the light carpet.
+
+"'D'you mean to say those are mine?' he cried.
+
+"They were certainly very much larger than any which he could have made,
+and were evidently quite fresh. It rained hard this afternoon, as you
+know, and my patients were the only people who called. It must have been
+the case, then, that the man in the waiting-room had, for some unknown
+reason, while I was busy with the other, ascended to the room of my
+resident patient. Nothing had been touched or taken, but there were the
+footprints to prove that the intrusion was an undoubted fact.
+
+"Mr. Blessington seemed more excited over the matter than I should have
+thought possible, though of course it was enough to disturb anybody's
+peace of mind. He actually sat crying in an arm-chair, and I could
+hardly get him to speak coherently. It was his suggestion that I should
+come round to you, and of course I at once saw the propriety of it,
+for certainly the incident is a very singular one, though he appears to
+completely overrate its importance. If you would only come back with me
+in my brougham, you would at least be able to soothe him, though I
+can hardly hope that you will be able to explain this remarkable
+occurrence."
+
+Sherlock Holmes had listened to this long narrative with an intentness
+which showed me that his interest was keenly aroused. His face was as
+impassive as ever, but his lids had drooped more heavily over his eyes,
+and his smoke had curled up more thickly from his pipe to emphasize each
+curious episode in the doctor's tale. As our visitor concluded, Holmes
+sprang up without a word, handed me my hat, picked his own from the
+table, and followed Dr. Trevelyan to the door. Within a quarter of an
+hour we had been dropped at the door of the physician's residence
+in Brook Street, one of those sombre, flat-faced houses which one
+associates with a West-End practice. A small page admitted us, and we
+began at once to ascend the broad, well-carpeted stair.
+
+But a singular interruption brought us to a standstill. The light at
+the top was suddenly whisked out, and from the darkness came a reedy,
+quivering voice.
+
+"I have a pistol," it cried. "I give you my word that I'll fire if you
+come any nearer."
+
+"This really grows outrageous, Mr. Blessington," cried Dr. Trevelyan.
+
+"Oh, then it is you, doctor," said the voice, with a great heave of
+relief. "But those other gentlemen, are they what they pretend to be?"
+
+We were conscious of a long scrutiny out of the darkness.
+
+"Yes, yes, it's all right," said the voice at last. "You can come up,
+and I am sorry if my precautions have annoyed you."
+
+He relit the stair gas as he spoke, and we saw before us a
+singular-looking man, whose appearance, as well as his voice, testified
+to his jangled nerves. He was very fat, but had apparently at some time
+been much fatter, so that the skin hung about his face in loose pouches,
+like the cheeks of a blood-hound. He was of a sickly color, and his
+thin, sandy hair seemed to bristle up with the intensity of his emotion.
+In his hand he held a pistol, but he thrust it into his pocket as we
+advanced.
+
+"Good-evening, Mr. Holmes," said he. "I am sure I am very much obliged
+to you for coming round. No one ever needed your advice more than I do.
+I suppose that Dr. Trevelyan has told you of this most unwarrantable
+intrusion into my rooms."
+
+"Quite so," said Holmes. "Who are these two men Mr. Blessington, and why
+do they wish to molest you?"
+
+"Well, well," said the resident patient, in a nervous fashion, "of
+course it is hard to say that. You can hardly expect me to answer that,
+Mr. Holmes."
+
+"Do you mean that you don't know?"
+
+"Come in here, if you please. Just have the kindness to step in here."
+
+He led the way into his bedroom, which was large and comfortably
+furnished.
+
+"You see that," said he, pointing to a big black box at the end of his
+bed. "I have never been a very rich man, Mr. Holmes--never made but
+one investment in my life, as Dr. Trevelyan would tell you. But I don't
+believe in bankers. I would never trust a banker, Mr. Holmes. Between
+ourselves, what little I have is in that box, so you can understand what
+it means to me when unknown people force themselves into my rooms."
+
+Holmes looked at Blessington in his questioning way and shook his head.
+
+"I cannot possibly advise you if you try to deceive me," said he.
+
+"But I have told you everything."
+
+Holmes turned on his heel with a gesture of disgust. "Good-night, Dr.
+Trevelyan," said he.
+
+"And no advice for me?" cried Blessington, in a breaking voice.
+
+"My advice to you, sir, is to speak the truth."
+
+A minute later we were in the street and walking for home. We had
+crossed Oxford Street and were half way down Harley Street before I
+could get a word from my companion.
+
+"Sorry to bring you out on such a fool's errand, Watson," he said at
+last. "It is an interesting case, too, at the bottom of it."
+
+"I can make little of it," I confessed.
+
+"Well, it is quite evident that there are two men--more, perhaps, but
+at least two--who are determined for some reason to get at this fellow
+Blessington. I have no doubt in my mind that both on the first and on
+the second occasion that young man penetrated to Blessington's room,
+while his confederate, by an ingenious device, kept the doctor from
+interfering."
+
+"And the catalepsy?"
+
+"A fraudulent imitation, Watson, though I should hardly dare to hint as
+much to our specialist. It is a very easy complaint to imitate. I have
+done it myself."
+
+"And then?"
+
+"By the purest chance Blessington was out on each occasion. Their reason
+for choosing so unusual an hour for a consultation was obviously to
+insure that there should be no other patient in the waiting-room. It
+just happened, however, that this hour coincided with Blessington's
+constitutional, which seems to show that they were not very well
+acquainted with his daily routine. Of course, if they had been merely
+after plunder they would at least have made some attempt to search for
+it. Besides, I can read in a man's eye when it is his own skin that he
+is frightened for. It is inconceivable that this fellow could have made
+two such vindictive enemies as these appear to be without knowing of it.
+I hold it, therefore, to be certain that he does know who these men are,
+and that for reasons of his own he suppresses it. It is just possible
+that to-morrow may find him in a more communicative mood."
+
+"Is there not one alternative," I suggested, "grotesquely improbably,
+no doubt, but still just conceivable? Might the whole story of the
+cataleptic Russian and his son be a concoction of Dr. Trevelyan's, who
+has, for his own purposes, been in Blessington's rooms?"
+
+I saw in the gaslight that Holmes wore an amused smile at this brilliant
+departure of mine.
+
+"My dear fellow," said he, "it was one of the first solutions which
+occurred to me, but I was soon able to corroborate the doctor's tale.
+This young man has left prints upon the stair-carpet which made it quite
+superfluous for me to ask to see those which he had made in the room.
+When I tell you that his shoes were square-toed instead of being pointed
+like Blessington's, and were quite an inch and a third longer than the
+doctor's, you will acknowledge that there can be no doubt as to his
+individuality. But we may sleep on it now, for I shall be surprised if
+we do not hear something further from Brook Street in the morning."
+
+
+Sherlock Holmes's prophecy was soon fulfilled, and in a dramatic
+fashion. At half-past seven next morning, in the first glimmer of
+daylight, I found him standing by my bedside in his dressing-gown.
+
+"There's a brougham waiting for us, Watson," said he.
+
+"What's the matter, then?"
+
+"The Brook Street business."
+
+"Any fresh news?"
+
+"Tragic, but ambiguous," said he, pulling up the blind. "Look at this--a
+sheet from a note-book, with 'For God's sake come at once--P. T.,'
+scrawled upon it in pencil. Our friend, the doctor, was hard put to
+it when he wrote this. Come along, my dear fellow, for it's an urgent
+call."
+
+In a quarter of an hour or so we were back at the physician's house. He
+came running out to meet us with a face of horror.
+
+"Oh, such a business!" he cried, with his hands to his temples.
+
+"What then?"
+
+"Blessington has committed suicide!"
+
+Holmes whistled.
+
+"Yes, he hanged himself during the night."
+
+We had entered, and the doctor had preceded us into what was evidently
+his waiting-room.
+
+"I really hardly know what I am doing," he cried. "The police are
+already upstairs. It has shaken me most dreadfully."
+
+"When did you find it out?"
+
+"He has a cup of tea taken in to him early every morning. When the maid
+entered, about seven, there the unfortunate fellow was hanging in the
+middle of the room. He had tied his cord to the hook on which the heavy
+lamp used to hang, and he had jumped off from the top of the very box
+that he showed us yesterday."
+
+Holmes stood for a moment in deep thought.
+
+"With your permission," said he at last, "I should like to go upstairs
+and look into the matter."
+
+We both ascended, followed by the doctor.
+
+It was a dreadful sight which met us as we entered the bedroom door. I
+have spoken of the impression of flabbiness which this man Blessington
+conveyed. As he dangled from the hook it was exaggerated and intensified
+until he was scarce human in his appearance. The neck was drawn out
+like a plucked chicken's, making the rest of him seem the more obese and
+unnatural by the contrast. He was clad only in his long night-dress, and
+his swollen ankles and ungainly feet protruded starkly from beneath it.
+Beside him stood a smart-looking police-inspector, who was taking notes
+in a pocket-book.
+
+"Ah, Mr. Holmes," said he, heartily, as my friend entered, "I am
+delighted to see you."
+
+"Good-morning, Lanner," answered Holmes; "you won't think me an
+intruder, I am sure. Have you heard of the events which led up to this
+affair?"
+
+"Yes, I heard something of them."
+
+"Have you formed any opinion?"
+
+"As far as I can see, the man has been driven out of his senses by
+fright. The bed has been well slept in, you see. There's his impression
+deep enough. It's about five in the morning, you know, that suicides are
+most common. That would be about his time for hanging himself. It seems
+to have been a very deliberate affair."
+
+"I should say that he has been dead about three hours, judging by the
+rigidity of the muscles," said I.
+
+"Noticed anything peculiar about the room?" asked Holmes.
+
+"Found a screw-driver and some screws on the wash-hand stand. Seems to
+have smoked heavily during the night, too. Here are four cigar-ends that
+I picked out of the fireplace."
+
+"Hum!" said Holmes, "have you got his cigar-holder?"
+
+"No, I have seen none."
+
+"His cigar-case, then?"
+
+"Yes, it was in his coat-pocket."
+
+Holmes opened it and smelled the single cigar which it contained.
+
+"Oh, this is an Havana, and these others are cigars of the peculiar sort
+which are imported by the Dutch from their East Indian colonies. They
+are usually wrapped in straw, you know, and are thinner for their length
+than any other brand." He picked up the four ends and examined them with
+his pocket-lens.
+
+"Two of these have been smoked from a holder and two without," said he.
+"Two have been cut by a not very sharp knife, and two have had the ends
+bitten off by a set of excellent teeth. This is no suicide, Mr. Lanner.
+It is a very deeply planned and cold-blooded murder."
+
+"Impossible!" cried the inspector.
+
+"And why?"
+
+"Why should any one murder a man in so clumsy a fashion as by hanging
+him?"
+
+"That is what we have to find out."
+
+"How could they get in?"
+
+"Through the front door."
+
+"It was barred in the morning."
+
+"Then it was barred after them."
+
+"How do you know?"
+
+"I saw their traces. Excuse me a moment, and I may be able to give you
+some further information about it."
+
+He went over to the door, and turning the lock he examined it in his
+methodical way. Then he took out the key, which was on the inside, and
+inspected that also. The bed, the carpet, the chairs the mantelpiece,
+the dead body, and the rope were each in turn examined, until at last he
+professed himself satisfied, and with my aid and that of the inspector
+cut down the wretched object and laid it reverently under a sheet.
+
+"How about this rope?" he asked.
+
+"It is cut off this," said Dr. Trevelyan, drawing a large coil from
+under the bed. "He was morbidly nervous of fire, and always kept this
+beside him, so that he might escape by the window in case the stairs
+were burning."
+
+"That must have saved them trouble," said Holmes, thoughtfully. "Yes,
+the actual facts are very plain, and I shall be surprised if by the
+afternoon I cannot give you the reasons for them as well. I will take
+this photograph of Blessington, which I see upon the mantelpiece, as it
+may help me in my inquiries."
+
+"But you have told us nothing!" cried the doctor.
+
+"Oh, there can be no doubt as to the sequence of events," said Holmes.
+"There were three of them in it: the young man, the old man, and a
+third, to whose identity I have no clue. The first two, I need hardly
+remark, are the same who masqueraded as the Russian count and his son,
+so we can give a very full description of them. They were admitted by
+a confederate inside the house. If I might offer you a word of advice,
+Inspector, it would be to arrest the page, who, as I understand, has
+only recently come into your service, Doctor."
+
+"The young imp cannot be found," said Dr. Trevelyan; "the maid and the
+cook have just been searching for him."
+
+Holmes shrugged his shoulders.
+
+"He has played a not unimportant part in this drama," said he. "The
+three men having ascended the stairs, which they did on tiptoe, the
+elder man first, the younger man second, and the unknown man in the
+rear--"
+
+"My dear Holmes!" I ejaculated.
+
+"Oh, there could be no question as to the superimposing of the
+footmarks. I had the advantage of learning which was which last night.
+They ascended, then, to Mr. Blessington's room, the door of which they
+found to be locked. With the help of a wire, however, they forced round
+the key. Even without the lens you will perceive, by the scratches on
+this ward, where the pressure was applied.
+
+"On entering the room their first proceeding must have been to gag Mr.
+Blessington. He may have been asleep, or he may have been so paralyzed
+with terror as to have been unable to cry out. These walls are thick,
+and it is conceivable that his shriek, if he had time to utter one, was
+unheard.
+
+"Having secured him, it is evident to me that a consultation of some
+sort was held. Probably it was something in the nature of a judicial
+proceeding. It must have lasted for some time, for it was then that
+these cigars were smoked. The older man sat in that wicker chair; it
+was he who used the cigar-holder. The younger man sat over yonder; he
+knocked his ash off against the chest of drawers. The third fellow paced
+up and down. Blessington, I think, sat upright in the bed, but of that I
+cannot be absolutely certain.
+
+"Well, it ended by their taking Blessington and hanging him. The matter
+was so prearranged that it is my belief that they brought with them
+some sort of block or pulley which might serve as a gallows. That
+screw-driver and those screws were, as I conceive, for fixing it up.
+Seeing the hook, however they naturally saved themselves the trouble.
+Having finished their work they made off, and the door was barred behind
+them by their confederate."
+
+We had all listened with the deepest interest to this sketch of the
+night's doings, which Holmes had deduced from signs so subtle and minute
+that, even when he had pointed them out to us, we could scarcely follow
+him in his reasoning. The inspector hurried away on the instant to make
+inquiries about the page, while Holmes and I returned to Baker Street
+for breakfast.
+
+"I'll be back by three," said he, when we had finished our meal. "Both
+the inspector and the doctor will meet me here at that hour, and I hope
+by that time to have cleared up any little obscurity which the case may
+still present."
+
+
+Our visitors arrived at the appointed time, but it was a quarter to
+four before my friend put in an appearance. From his expression as he
+entered, however, I could see that all had gone well with him.
+
+"Any news, Inspector?"
+
+"We have got the boy, sir."
+
+"Excellent, and I have got the men."
+
+"You have got them!" we cried, all three.
+
+"Well, at least I have got their identity. This so-called Blessington
+is, as I expected, well known at headquarters, and so are his
+assailants. Their names are Biddle, Hayward, and Moffat."
+
+"The Worthingdon bank gang," cried the inspector.
+
+"Precisely," said Holmes.
+
+"Then Blessington must have been Sutton."
+
+"Exactly," said Holmes.
+
+"Why, that makes it as clear as crystal," said the inspector.
+
+But Trevelyan and I looked at each other in bewilderment.
+
+"You must surely remember the great Worthingdon bank business," said
+Holmes. "Five men were in it--these four and a fifth called Cartwright.
+Tobin, the care-taker, was murdered, and the thieves got away with seven
+thousand pounds. This was in 1875. They were all five arrested, but the
+evidence against them was by no means conclusive. This Blessington or
+Sutton, who was the worst of the gang, turned informer. On his evidence
+Cartwright was hanged and the other three got fifteen years apiece. When
+they got out the other day, which was some years before their full term,
+they set themselves, as you perceive, to hunt down the traitor and to
+avenge the death of their comrade upon him. Twice they tried to get at
+him and failed; a third time, you see, it came off. Is there anything
+further which I can explain, Dr. Trevelyan?"
+
+"I think you have made it all remarkable clear," said the doctor. "No
+doubt the day on which he was perturbed was the day when he had seen of
+their release in the newspapers."
+
+"Quite so. His talk about a burglary was the merest blind."
+
+"But why could he not tell you this?"
+
+"Well, my dear sir, knowing the vindictive character of his old
+associates, he was trying to hide his own identity from everybody as
+long as he could. His secret was a shameful one, and he could not bring
+himself to divulge it. However, wretch as he was, he was still living
+under the shield of British law, and I have no doubt, Inspector, that
+you will see that, though that shield may fail to guard, the sword of
+justice is still there to avenge."
+
+
+Such were the singular circumstances in connection with the Resident
+Patient and the Brook Street Doctor. From that night nothing has
+been seen of the three murderers by the police, and it is surmised
+at Scotland Yard that they were among the passengers of the ill-fated
+steamer Norah Creina, which was lost some years ago with all hands
+upon the Portuguese coast, some leagues to the north of Oporto. The
+proceedings against the page broke down for want of evidence, and the
+Brook Street Mystery, as it was called, has never until now been fully
+dealt with in any public print.
+
+
+
+
+Adventure IX. The Greek Interpreter
+
+
+During my long and intimate acquaintance with Mr. Sherlock Holmes I had
+never heard him refer to his relations, and hardly ever to his own early
+life. This reticence upon his part had increased the somewhat inhuman
+effect which he produced upon me, until sometimes I found myself
+regarding him as an isolated phenomenon, a brain without a heart, as
+deficient in human sympathy as he was pre-eminent in intelligence. His
+aversion to women and his disinclination to form new friendships were
+both typical of his unemotional character, but not more so than his
+complete suppression of every reference to his own people. I had come to
+believe that he was an orphan with no relatives living, but one day, to
+my very great surprise, he began to talk to me about his brother.
+
+It was after tea on a summer evening, and the conversation, which had
+roamed in a desultory, spasmodic fashion from golf clubs to the causes
+of the change in the obliquity of the ecliptic, came round at last
+to the question of atavism and hereditary aptitudes. The point under
+discussion was, how far any singular gift in an individual was due to
+his ancestry and how far to his own early training.
+
+"In your own case," said I, "from all that you have told me, it seems
+obvious that your faculty of observation and your peculiar facility for
+deduction are due to your own systematic training."
+
+"To some extent," he answered, thoughtfully. "My ancestors were country
+squires, who appear to have led much the same life as is natural to
+their class. But, none the less, my turn that way is in my veins, and
+may have come with my grandmother, who was the sister of Vernet, the
+French artist. Art in the blood is liable to take the strangest forms."
+
+"But how do you know that it is hereditary?"
+
+"Because my brother Mycroft possesses it in a larger degree than I do."
+
+This was news to me indeed. If there were another man with such singular
+powers in England, how was it that neither police nor public had heard
+of him? I put the question, with a hint that it was my companion's
+modesty which made him acknowledge his brother as his superior. Holmes
+laughed at my suggestion.
+
+"My dear Watson," said he, "I cannot agree with those who rank modesty
+among the virtues. To the logician all things should be seen exactly as
+they are, and to underestimate one's self is as much a departure from
+truth as to exaggerate one's own powers. When I say, therefore, that
+Mycroft has better powers of observation than I, you may take it that I
+am speaking the exact and literal truth."
+
+"Is he your junior?"
+
+"Seven years my senior."
+
+"How comes it that he is unknown?"
+
+"Oh, he is very well known in his own circle."
+
+"Where, then?"
+
+"Well, in the Diogenes Club, for example."
+
+I had never heard of the institution, and my face must have proclaimed
+as much, for Sherlock Holmes pulled out his watch.
+
+"The Diogenes Club is the queerest club in London, and Mycroft one of
+the queerest men. He's always there from quarter to five to twenty to
+eight. It's six now, so if you care for a stroll this beautiful evening
+I shall be very happy to introduce you to two curiosities."
+
+Five minutes later we were in the street, walking towards Regent's
+Circus.
+
+"You wonder," said my companion, "why it is that Mycroft does not use
+his powers for detective work. He is incapable of it."
+
+"But I thought you said--"
+
+"I said that he was my superior in observation and deduction. If the
+art of the detective began and ended in reasoning from an arm-chair, my
+brother would be the greatest criminal agent that ever lived. But he has
+no ambition and no energy. He will not even go out of his way to verify
+his own solutions, and would rather be considered wrong than take the
+trouble to prove himself right. Again and again I have taken a problem
+to him, and have received an explanation which has afterwards proved to
+be the correct one. And yet he was absolutely incapable of working out
+the practical points which must be gone into before a case could be laid
+before a judge or jury."
+
+"It is not his profession, then?"
+
+"By no means. What is to me a means of livelihood is to him the merest
+hobby of a dilettante. He has an extraordinary faculty for figures, and
+audits the books in some of the government departments. Mycroft lodges
+in Pall Mall, and he walks round the corner into Whitehall every morning
+and back every evening. From year's end to year's end he takes no other
+exercise, and is seen nowhere else, except only in the Diogenes Club,
+which is just opposite his rooms."
+
+"I cannot recall the name."
+
+"Very likely not. There are many men in London, you know, who, some from
+shyness, some from misanthropy, have no wish for the company of their
+fellows. Yet they are not averse to comfortable chairs and the latest
+periodicals. It is for the convenience of these that the Diogenes Club
+was started, and it now contains the most unsociable and unclubable men
+in town. No member is permitted to take the least notice of any
+other one. Save in the Stranger's Room, no talking is, under any
+circumstances, allowed, and three offences, if brought to the notice of
+the committee, render the talker liable to expulsion. My brother was one
+of the founders, and I have myself found it a very soothing atmosphere."
+
+We had reached Pall Mall as we talked, and were walking down it from the
+St. James's end. Sherlock Holmes stopped at a door some little distance
+from the Carlton, and, cautioning me not to speak, he led the way into
+the hall. Through the glass paneling I caught a glimpse of a large and
+luxurious room, in which a considerable number of men were sitting about
+and reading papers, each in his own little nook. Holmes showed me into a
+small chamber which looked out into Pall Mall, and then, leaving me for
+a minute, he came back with a companion whom I knew could only be his
+brother.
+
+Mycroft Holmes was a much larger and stouter man than Sherlock. His body
+was absolutely corpulent, but his face, though massive, had preserved
+something of the sharpness of expression which was so remarkable in that
+of his brother. His eyes, which were of a peculiarly light, watery gray,
+seemed to always retain that far-away, introspective look which I had
+only observed in Sherlock's when he was exerting his full powers.
+
+"I am glad to meet you, sir," said he, putting out a broad, fat hand
+like the flipper of a seal. "I hear of Sherlock everywhere since you
+became his chronicler. By the way, Sherlock, I expected to see you round
+last week, to consult me over that Manor House case. I thought you might
+be a little out of your depth."
+
+"No, I solved it," said my friend, smiling.
+
+"It was Adams, of course."
+
+"Yes, it was Adams."
+
+"I was sure of it from the first." The two sat down together in the
+bow-window of the club. "To any one who wishes to study mankind this is
+the spot," said Mycroft. "Look at the magnificent types! Look at these
+two men who are coming towards us, for example."
+
+"The billiard-marker and the other?"
+
+"Precisely. What do you make of the other?"
+
+The two men had stopped opposite the window. Some chalk marks over the
+waistcoat pocket were the only signs of billiards which I could see
+in one of them. The other was a very small, dark fellow, with his hat
+pushed back and several packages under his arm.
+
+"An old soldier, I perceive," said Sherlock.
+
+"And very recently discharged," remarked the brother.
+
+"Served in India, I see."
+
+"And a non-commissioned officer."
+
+"Royal Artillery, I fancy," said Sherlock.
+
+"And a widower."
+
+"But with a child."
+
+"Children, my dear boy, children."
+
+"Come," said I, laughing, "this is a little too much."
+
+"Surely," answered Holmes, "it is not hard to say that a man with that
+bearing, expression of authority, and sunbaked skin, is a soldier, is
+more than a private, and is not long from India."
+
+"That he has not left the service long is shown by his still wearing his
+ammunition boots, as they are called," observed Mycroft.
+
+"He had not the cavalry stride, yet he wore his hat on one side, as
+is shown by the lighter skin of that side of his brow. His weight is
+against his being a sapper. He is in the artillery."
+
+"Then, of course, his complete mourning shows that he has lost some one
+very dear. The fact that he is doing his own shopping looks as though
+it were his wife. He has been buying things for children, you perceive.
+There is a rattle, which shows that one of them is very young. The wife
+probably died in childbed. The fact that he has a picture-book under his
+arm shows that there is another child to be thought of."
+
+I began to understand what my friend meant when he said that his brother
+possessed even keener faculties that he did himself. He glanced across
+at me and smiled. Mycroft took snuff from a tortoise-shell box, and
+brushed away the wandering grains from his coat front with a large, red
+silk handkerchief.
+
+"By the way, Sherlock," said he, "I have had something quite after your
+own heart--a most singular problem--submitted to my judgment. I really
+had not the energy to follow it up save in a very incomplete fashion,
+but it gave me a basis for some pleasing speculation. If you would care
+to hear the facts--"
+
+"My dear Mycroft, I should be delighted."
+
+The brother scribbled a note upon a leaf of his pocket-book, and,
+ringing the bell, he handed it to the waiter.
+
+"I have asked Mr. Melas to step across," said he. "He lodges on the
+floor above me, and I have some slight acquaintance with him, which led
+him to come to me in his perplexity. Mr. Melas is a Greek by extraction,
+as I understand, and he is a remarkable linguist. He earns his living
+partly as interpreter in the law courts and partly by acting as guide to
+any wealthy Orientals who may visit the Northumberland Avenue hotels. I
+think I will leave him to tell his very remarkable experience in his own
+fashion."
+
+A few minutes later we were joined by a short, stout man whose olive
+face and coal-black hair proclaimed his Southern origin, though his
+speech was that of an educated Englishman. He shook hands eagerly
+with Sherlock Holmes, and his dark eyes sparkled with pleasure when he
+understood that the specialist was anxious to hear his story.
+
+"I do not believe that the police credit me--on my word, I do not," said
+he in a wailing voice. "Just because they have never heard of it before,
+they think that such a thing cannot be. But I know that I shall never
+be easy in my mind until I know what has become of my poor man with the
+sticking-plaster upon his face."
+
+"I am all attention," said Sherlock Holmes.
+
+"This is Wednesday evening," said Mr. Melas. "Well then, it was Monday
+night--only two days ago, you understand--that all this happened. I am
+an interpreter, as perhaps my neighbor there has told you. I interpret
+all languages--or nearly all--but as I am a Greek by birth and with a
+Grecian name, it is with that particular tongue that I am principally
+associated. For many years I have been the chief Greek interpreter in
+London, and my name is very well known in the hotels.
+
+"It happens not unfrequently that I am sent for at strange hours by
+foreigners who get into difficulties, or by travelers who arrive late
+and wish my services. I was not surprised, therefore, on Monday night
+when a Mr. Latimer, a very fashionably dressed young man, came up to my
+rooms and asked me to accompany him in a cab which was waiting at the
+door. A Greek friend had come to see him upon business, he said, and
+as he could speak nothing but his own tongue, the services of an
+interpreter were indispensable. He gave me to understand that his house
+was some little distance off, in Kensington, and he seemed to be in a
+great hurry, bustling me rapidly into the cab when we had descended to
+the street.
+
+"I say into the cab, but I soon became doubtful as to whether it was not
+a carriage in which I found myself. It was certainly more roomy than
+the ordinary four-wheeled disgrace to London, and the fittings, though
+frayed, were of rich quality. Mr. Latimer seated himself opposite to me
+and we started off through Charing Cross and up the Shaftesbury Avenue.
+We had come out upon Oxford Street and I had ventured some remark as to
+this being a roundabout way to Kensington, when my words were arrested
+by the extraordinary conduct of my companion.
+
+"He began by drawing a most formidable-looking bludgeon loaded with lead
+from his pocket, and switching it backward and forward several times,
+as if to test its weight and strength. Then he placed it without a word
+upon the seat beside him. Having done this, he drew up the windows on
+each side, and I found to my astonishment that they were covered with
+paper so as to prevent my seeing through them.
+
+"'I am sorry to cut off your view, Mr. Melas,' said he. 'The fact is
+that I have no intention that you should see what the place is to which
+we are driving. It might possibly be inconvenient to me if you could
+find your way there again.'
+
+"As you can imagine, I was utterly taken aback by such an address. My
+companion was a powerful, broad-shouldered young fellow, and, apart from
+the weapon, I should not have had the slightest chance in a struggle
+with him.
+
+"'This is very extraordinary conduct, Mr. Latimer,' I stammered. 'You
+must be aware that what you are doing is quite illegal.'
+
+"'It is somewhat of a liberty, no doubt,' said he, 'but we'll make it
+up to you. I must warn you, however, Mr. Melas, that if at any time
+to-night you attempt to raise an alarm or do anything which is against
+my interests, you will find it a very serious thing. I beg you to
+remember that no one knows where you are, and that, whether you are in
+this carriage or in my house, you are equally in my power.'
+
+"His words were quiet, but he had a rasping way of saying them which
+was very menacing. I sat in silence wondering what on earth could be
+his reason for kidnapping me in this extraordinary fashion. Whatever it
+might be, it was perfectly clear that there was no possible use in my
+resisting, and that I could only wait to see what might befall.
+
+"For nearly two hours we drove without my having the least clue as to
+where we were going. Sometimes the rattle of the stones told of a paved
+causeway, and at others our smooth, silent course suggested asphalt;
+but, save by this variation in sound, there was nothing at all which
+could in the remotest way help me to form a guess as to where we were.
+The paper over each window was impenetrable to light, and a blue curtain
+was drawn across the glass work in front. It was a quarter-past seven
+when we left Pall Mall, and my watch showed me that it was ten minutes
+to nine when we at last came to a standstill. My companion let down
+the window, and I caught a glimpse of a low, arched doorway with a lamp
+burning above it. As I was hurried from the carriage it swung open, and
+I found myself inside the house, with a vague impression of a lawn
+and trees on each side of me as I entered. Whether these were private
+grounds, however, or bona-fide country was more than I could possibly
+venture to say.
+
+"There was a colored gas-lamp inside which was turned so low that I
+could see little save that the hall was of some size and hung with
+pictures. In the dim light I could make out that the person who had
+opened the door was a small, mean-looking, middle-aged man with rounded
+shoulders. As he turned towards us the glint of the light showed me that
+he was wearing glasses.
+
+"'Is this Mr. Melas, Harold?' said he.
+
+"'Yes.'
+
+"'Well done, well done! No ill-will, Mr. Melas, I hope, but we could not
+get on without you. If you deal fair with us you'll not regret it,
+but if you try any tricks, God help you!' He spoke in a nervous, jerky
+fashion, and with little giggling laughs in between, but somehow he
+impressed me with fear more than the other.
+
+"'What do you want with me?' I asked.
+
+"'Only to ask a few questions of a Greek gentleman who is visiting us,
+and to let us have the answers. But say no more than you are told to
+say, or--' here came the nervous giggle again--'you had better never
+have been born.'
+
+"As he spoke he opened a door and showed the way into a room which
+appeared to be very richly furnished, but again the only light was
+afforded by a single lamp half-turned down. The chamber was certainly
+large, and the way in which my feet sank into the carpet as I stepped
+across it told me of its richness. I caught glimpses of velvet chairs, a
+high white marble mantel-piece, and what seemed to be a suit of Japanese
+armor at one side of it. There was a chair just under the lamp, and the
+elderly man motioned that I should sit in it. The younger had left
+us, but he suddenly returned through another door, leading with him
+a gentleman clad in some sort of loose dressing-gown who moved slowly
+towards us. As he came into the circle of dim light which enables me to
+see him more clearly I was thrilled with horror at his appearance. He
+was deadly pale and terribly emaciated, with the protruding, brilliant
+eyes of a man whose spirit was greater than his strength. But what
+shocked me more than any signs of physical weakness was that his face
+was grotesquely criss-crossed with sticking-plaster, and that one large
+pad of it was fastened over his mouth.
+
+"'Have you the slate, Harold?' cried the older man, as this strange
+being fell rather than sat down into a chair. 'Are his hands loose? Now,
+then, give him the pencil. You are to ask the questions, Mr. Melas, and
+he will write the answers. Ask him first of all whether he is prepared
+to sign the papers?'
+
+"The man's eyes flashed fire.
+
+"'Never!' he wrote in Greek upon the slate.
+
+"'On no condition?' I asked, at the bidding of our tyrant.
+
+"'Only if I see her married in my presence by a Greek priest whom I
+know.'
+
+"The man giggled in his venomous way.
+
+"'You know what awaits you, then?'
+
+"'I care nothing for myself.'
+
+"These are samples of the questions and answers which made up our
+strange half-spoken, half-written conversation. Again and again I had to
+ask him whether he would give in and sign the documents. Again and again
+I had the same indignant reply. But soon a happy thought came to me. I
+took to adding on little sentences of my own to each question, innocent
+ones at first, to test whether either of our companions knew anything
+of the matter, and then, as I found that they showed no signs I played a
+more dangerous game. Our conversation ran something like this:
+
+"'You can do no good by this obstinacy. Who are you?'
+
+"'I care not. I am a stranger in London.'
+
+"'Your fate will be upon your own head. How long have you been here?'
+
+"'Let it be so. Three weeks.'
+
+"'The property can never be yours. What ails you?'
+
+"'It shall not go to villains. They are starving me.'
+
+"'You shall go free if you sign. What house is this?'
+
+"'I will never sign. I do not know.'
+
+"'You are not doing her any service. What is your name?'
+
+"'Let me hear her say so. Kratides.'
+
+"'You shall see her if you sign. Where are you from?'
+
+"'Then I shall never see her. Athens.'
+
+"Another five minutes, Mr. Holmes, and I should have wormed out the
+whole story under their very noses. My very next question might have
+cleared the matter up, but at that instant the door opened and a woman
+stepped into the room. I could not see her clearly enough to know more
+than that she was tall and graceful, with black hair, and clad in some
+sort of loose white gown.
+
+"'Harold,' said she, speaking English with a broken accent. 'I could not
+stay away longer. It is so lonely up there with only--Oh, my God, it is
+Paul!'
+
+"These last words were in Greek, and at the same instant the man with
+a convulsive effort tore the plaster from his lips, and screaming out
+'Sophy! Sophy!' rushed into the woman's arms. Their embrace was but for
+an instant, however, for the younger man seized the woman and pushed
+her out of the room, while the elder easily overpowered his emaciated
+victim, and dragged him away through the other door. For a moment I was
+left alone in the room, and I sprang to my feet with some vague idea
+that I might in some way get a clue to what this house was in which I
+found myself. Fortunately, however, I took no steps, for looking up I
+saw that the older man was standing in the door-way with his eyes fixed
+upon me.
+
+"'That will do, Mr. Melas,' said he. 'You perceive that we have taken
+you into our confidence over some very private business. We should not
+have troubled you, only that our friend who speaks Greek and who began
+these negotiations has been forced to return to the East. It was
+quite necessary for us to find some one to take his place, and we were
+fortunate in hearing of your powers.'
+
+"I bowed.
+
+"'There are five sovereigns here,' said he, walking up to me, 'which
+will, I hope, be a sufficient fee. But remember,' he added, tapping me
+lightly on the chest and giggling, 'if you speak to a human soul about
+this--one human soul, mind--well, may God have mercy upon your soul!"
+
+"I cannot tell you the loathing and horror with which this
+insignificant-looking man inspired me. I could see him better now as the
+lamp-light shone upon him. His features were peaky and sallow, and his
+little pointed beard was thready and ill-nourished. He pushed his face
+forward as he spoke and his lips and eyelids were continually twitching
+like a man with St. Vitus's dance. I could not help thinking that his
+strange, catchy little laugh was also a symptom of some nervous malady.
+The terror of his face lay in his eyes, however, steel gray, and
+glistening coldly with a malignant, inexorable cruelty in their depths.
+
+"'We shall know if you speak of this,' said he. 'We have our own means
+of information. Now you will find the carriage waiting, and my friend
+will see you on your way.'
+
+"I was hurried through the hall and into the vehicle, again obtaining
+that momentary glimpse of trees and a garden. Mr. Latimer followed
+closely at my heels, and took his place opposite to me without a word.
+In silence we again drove for an interminable distance with the windows
+raised, until at last, just after midnight, the carriage pulled up.
+
+"'You will get down here, Mr. Melas,' said my companion. 'I am sorry
+to leave you so far from your house, but there is no alternative. Any
+attempt upon your part to follow the carriage can only end in injury to
+yourself.'
+
+"He opened the door as he spoke, and I had hardly time to spring out
+when the coachman lashed the horse and the carriage rattled away. I
+looked around me in astonishment. I was on some sort of a heathy common
+mottled over with dark clumps of furze-bushes. Far away stretched a
+line of houses, with a light here and there in the upper windows. On the
+other side I saw the red signal-lamps of a railway.
+
+"The carriage which had brought me was already out of sight. I stood
+gazing round and wondering where on earth I might be, when I saw some
+one coming towards me in the darkness. As he came up to me I made out
+that he was a railway porter.
+
+"'Can you tell me what place this is?' I asked.
+
+"'Wandsworth Common,' said he.
+
+"'Can I get a train into town?'
+
+"'If you walk on a mile or so to Clapham Junction,' said he, 'you'll
+just be in time for the last to Victoria.'
+
+"So that was the end of my adventure, Mr. Holmes. I do not know where I
+was, nor whom I spoke with, nor anything save what I have told you. But
+I know that there is foul play going on, and I want to help that unhappy
+man if I can. I told the whole story to Mr. Mycroft Holmes next morning,
+and subsequently to the police."
+
+We all sat in silence for some little time after listening to this
+extraordinary narrative. Then Sherlock looked across at his brother.
+
+"Any steps?" he asked.
+
+Mycroft picked up the Daily News, which was lying on the side-table.
+
+"'Anybody supplying any information to the whereabouts of a Greek
+gentleman named Paul Kratides, from Athens, who is unable to speak
+English, will be rewarded. A similar reward paid to any one giving
+information about a Greek lady whose first name is Sophy. X 2473.' That
+was in all the dailies. No answer."
+
+"How about the Greek Legation?"
+
+"I have inquired. They know nothing."
+
+"A wire to the head of the Athens police, then?"
+
+"Sherlock has all the energy of the family," said Mycroft, turning to
+me. "Well, you take the case up by all means, and let me know if you do
+any good."
+
+"Certainly," answered my friend, rising from his chair. "I'll let you
+know, and Mr. Melas also. In the meantime, Mr. Melas, I should certainly
+be on my guard, if I were you, for of course they must know through
+these advertisements that you have betrayed them."
+
+As we walked home together, Holmes stopped at a telegraph office and
+sent off several wires.
+
+"You see, Watson," he remarked, "our evening has been by no means
+wasted. Some of my most interesting cases have come to me in this way
+through Mycroft. The problem which we have just listened to, although
+it can admit of but one explanation, has still some distinguishing
+features."
+
+"You have hopes of solving it?"
+
+"Well, knowing as much as we do, it will be singular indeed if we fail
+to discover the rest. You must yourself have formed some theory which
+will explain the facts to which we have listened."
+
+"In a vague way, yes."
+
+"What was your idea, then?"
+
+"It seemed to me to be obvious that this Greek girl had been carried off
+by the young Englishman named Harold Latimer."
+
+"Carried off from where?"
+
+"Athens, perhaps."
+
+Sherlock Holmes shook his head. "This young man could not talk a word of
+Greek. The lady could talk English fairly well. Inference--that she had
+been in England some little time, but he had not been in Greece."
+
+"Well, then, we will presume that she had come on a visit to England,
+and that this Harold had persuaded her to fly with him."
+
+"That is more probable."
+
+"Then the brother--for that, I fancy, must be the relationship--comes
+over from Greece to interfere. He imprudently puts himself into the
+power of the young man and his older associate. They seize him and use
+violence towards him in order to make him sign some papers to make over
+the girl's fortune--of which he may be trustee--to them. This he refuses
+to do. In order to negotiate with him they have to get an interpreter,
+and they pitch upon this Mr. Melas, having used some other one before.
+The girl is not told of the arrival of her brother, and finds it out by
+the merest accident."
+
+"Excellent, Watson!" cried Holmes. "I really fancy that you are not far
+from the truth. You see that we hold all the cards, and we have only to
+fear some sudden act of violence on their part. If they give us time we
+must have them."
+
+"But how can we find where this house lies?"
+
+"Well, if our conjecture is correct and the girl's name is or was Sophy
+Kratides, we should have no difficulty in tracing her. That must be our
+main hope, for the brother is, of course, a complete stranger. It is
+clear that some time has elapsed since this Harold established these
+relations with the girl--some weeks, at any rate--since the brother in
+Greece has had time to hear of it and come across. If they have been
+living in the same place during this time, it is probable that we shall
+have some answer to Mycroft's advertisement."
+
+We had reached our house in Baker Street while we had been talking.
+Holmes ascended the stair first, and as he opened the door of our room
+he gave a start of surprise. Looking over his shoulder, I was equally
+astonished. His brother Mycroft was sitting smoking in the arm-chair.
+
+"Come in, Sherlock! Come in, sir," said he blandly, smiling at our
+surprised faces. "You don't expect such energy from me, do you,
+Sherlock? But somehow this case attracts me."
+
+"How did you get here?"
+
+"I passed you in a hansom."
+
+"There has been some new development?"
+
+"I had an answer to my advertisement."
+
+"Ah!"
+
+"Yes, it came within a few minutes of your leaving."
+
+"And to what effect?"
+
+Mycroft Holmes took out a sheet of paper.
+
+"Here it is," said he, "written with a J pen on royal cream paper by a
+middle-aged man with a weak constitution. 'Sir,' he says, 'in answer to
+your advertisement of to-day's date, I beg to inform you that I know the
+young lady in question very well. If you should care to call upon me I
+could give you some particulars as to her painful history. She is living
+at present at The Myrtles, Beckenham. Yours faithfully, J. Davenport.'
+
+"He writes from Lower Brixton," said Mycroft Holmes. "Do you not think
+that we might drive to him now, Sherlock, and learn these particulars?"
+
+"My dear Mycroft, the brother's life is more valuable than the sister's
+story. I think we should call at Scotland Yard for Inspector Gregson,
+and go straight out to Beckenham. We know that a man is being done to
+death, and every hour may be vital."
+
+"Better pick up Mr. Melas on our way," I suggested. "We may need an
+interpreter."
+
+"Excellent," said Sherlock Holmes. "Send the boy for a four-wheeler, and
+we shall be off at once." He opened the table-drawer as he spoke, and I
+noticed that he slipped his revolver into his pocket. "Yes," said he, in
+answer to my glance; "I should say from what we have heard, that we are
+dealing with a particularly dangerous gang."
+
+It was almost dark before we found ourselves in Pall Mall, at the rooms
+of Mr. Melas. A gentleman had just called for him, and he was gone.
+
+"Can you tell me where?" asked Mycroft Holmes.
+
+"I don't know, sir," answered the woman who had opened the door; "I only
+know that he drove away with the gentleman in a carriage."
+
+"Did the gentleman give a name?"
+
+"No, sir."
+
+"He wasn't a tall, handsome, dark young man?"
+
+"Oh, no, sir. He was a little gentleman, with glasses, thin in the face,
+but very pleasant in his ways, for he was laughing all the time that he
+was talking."
+
+"Come along!" cried Sherlock Holmes, abruptly. "This grows serious,"
+he observed, as we drove to Scotland Yard. "These men have got hold of
+Melas again. He is a man of no physical courage, as they are well
+aware from their experience the other night. This villain was able to
+terrorize him the instant that he got into his presence. No doubt
+they want his professional services, but, having used him, they may be
+inclined to punish him for what they will regard as his treachery."
+
+Our hope was that, by taking train, we might get to Beckenham as soon
+or sooner than the carriage. On reaching Scotland Yard, however, it was
+more than an hour before we could get Inspector Gregson and comply with
+the legal formalities which would enable us to enter the house. It was a
+quarter to ten before we reached London Bridge, and half past before the
+four of us alighted on the Beckenham platform. A drive of half a mile
+brought us to The Myrtles--a large, dark house standing back from the
+road in its own grounds. Here we dismissed our cab, and made our way up
+the drive together.
+
+"The windows are all dark," remarked the inspector. "The house seems
+deserted."
+
+"Our birds are flown and the nest empty," said Holmes.
+
+"Why do you say so?"
+
+"A carriage heavily loaded with luggage has passed out during the last
+hour."
+
+The inspector laughed. "I saw the wheel-tracks in the light of the
+gate-lamp, but where does the luggage come in?"
+
+"You may have observed the same wheel-tracks going the other way. But
+the outward-bound ones were very much deeper--so much so that we can
+say for a certainty that there was a very considerable weight on the
+carriage."
+
+"You get a trifle beyond me there," said the inspector, shrugging his
+shoulder. "It will not be an easy door to force, but we will try if we
+cannot make some one hear us."
+
+He hammered loudly at the knocker and pulled at the bell, but without
+any success. Holmes had slipped away, but he came back in a few minutes.
+
+"I have a window open," said he.
+
+"It is a mercy that you are on the side of the force, and not against
+it, Mr. Holmes," remarked the inspector, as he noted the clever way in
+which my friend had forced back the catch. "Well, I think that under the
+circumstances we may enter without an invitation."
+
+One after the other we made our way into a large apartment, which was
+evidently that in which Mr. Melas had found himself. The inspector
+had lit his lantern, and by its light we could see the two doors, the
+curtain, the lamp, and the suit of Japanese mail as he had described
+them. On the table lay two glasses, and empty brandy-bottle, and the
+remains of a meal.
+
+"What is that?" asked Holmes, suddenly.
+
+We all stood still and listened. A low moaning sound was coming from
+somewhere over our heads. Holmes rushed to the door and out into the
+hall. The dismal noise came from upstairs. He dashed up, the inspector
+and I at his heels, while his brother Mycroft followed as quickly as his
+great bulk would permit.
+
+Three doors faced up upon the second floor, and it was from the central
+of these that the sinister sounds were issuing, sinking sometimes into a
+dull mumble and rising again into a shrill whine. It was locked, but the
+key had been left on the outside. Holmes flung open the door and rushed
+in, but he was out again in an instant, with his hand to his throat.
+
+"It's charcoal," he cried. "Give it time. It will clear."
+
+Peering in, we could see that the only light in the room came from a
+dull blue flame which flickered from a small brass tripod in the centre.
+It threw a livid, unnatural circle upon the floor, while in the shadows
+beyond we saw the vague loom of two figures which crouched against the
+wall. From the open door there reeked a horrible poisonous exhalation
+which set us gasping and coughing. Holmes rushed to the top of the
+stairs to draw in the fresh air, and then, dashing into the room, he
+threw up the window and hurled the brazen tripod out into the garden.
+
+"We can enter in a minute," he gasped, darting out again. "Where is a
+candle? I doubt if we could strike a match in that atmosphere. Hold the
+light at the door and we shall get them out, Mycroft, now!"
+
+With a rush we got to the poisoned men and dragged them out into the
+well-lit hall. Both of them were blue-lipped and insensible, with
+swollen, congested faces and protruding eyes. Indeed, so distorted were
+their features that, save for his black beard and stout figure, we might
+have failed to recognize in one of them the Greek interpreter who had
+parted from us only a few hours before at the Diogenes Club. His hands
+and feet were securely strapped together, and he bore over one eye
+the marks of a violent blow. The other, who was secured in a similar
+fashion, was a tall man in the last stage of emaciation, with several
+strips of sticking-plaster arranged in a grotesque pattern over his
+face. He had ceased to moan as we laid him down, and a glance showed
+me that for him at least our aid had come too late. Mr. Melas, however,
+still lived, and in less than an hour, with the aid of ammonia and
+brandy I had the satisfaction of seeing him open his eyes, and of
+knowing that my hand had drawn him back from that dark valley in which
+all paths meet.
+
+It was a simple story which he had to tell, and one which did but
+confirm our own deductions. His visitor, on entering his rooms, had
+drawn a life-preserver from his sleeve, and had so impressed him with
+the fear of instant and inevitable death that he had kidnapped him for
+the second time. Indeed, it was almost mesmeric, the effect which this
+giggling ruffian had produced upon the unfortunate linguist, for he
+could not speak of him save with trembling hands and a blanched cheek.
+He had been taken swiftly to Beckenham, and had acted as interpreter in
+a second interview, even more dramatic than the first, in which the two
+Englishmen had menaced their prisoner with instant death if he did not
+comply with their demands. Finally, finding him proof against every
+threat, they had hurled him back into his prison, and after
+reproaching Melas with his treachery, which appeared from the newspaper
+advertisement, they had stunned him with a blow from a stick, and he
+remembered nothing more until he found us bending over him.
+
+And this was the singular case of the Grecian Interpreter, the
+explanation of which is still involved in some mystery. We were able
+to find out, by communicating with the gentleman who had answered the
+advertisement, that the unfortunate young lady came of a wealthy Grecian
+family, and that she had been on a visit to some friends in England.
+While there she had met a young man named Harold Latimer, who had
+acquired an ascendancy over he and had eventually persuaded her to fly
+with him. Her friends, shocked at the event, had contented themselves
+with informing her brother at Athens, and had then washed their hands
+of the matter. The brother, on his arrival in England, had imprudently
+placed himself in the power of Latimer and of his associate, whose name
+was Wilson Kemp--a man of the foulest antecedents. These two, finding
+that through his ignorance of the language he was helpless in their
+hands, had kept him a prisoner, and had endeavored by cruelty and
+starvation to make him sign away his own and his sister's property. They
+had kept him in the house without the girl's knowledge, and the plaster
+over the face had been for the purpose of making recognition difficult
+in case she should ever catch a glimpse of him. Her feminine perception,
+however, had instantly seen through the disguise when, on the occasion
+of the interpreter's visit, she had seen him for the first time. The
+poor girl, however, was herself a prisoner, for there was no one about
+the house except the man who acted as coachman, and his wife, both of
+whom were tools of the conspirators. Finding that their secret was out,
+and that their prisoner was not to be coerced, the two villains with the
+girl had fled away at a few hours' notice from the furnished house which
+they had hired, having first, as they thought, taken vengeance both upon
+the man who had defied and the one who had betrayed them.
+
+Months afterwards a curious newspaper cutting reached us from
+Buda-Pesth. It told how two Englishmen who had been traveling with a
+woman had met with a tragic end. They had each been stabbed, it seems,
+and the Hungarian police were of opinion that they had quarreled and had
+inflicted mortal injuries upon each other. Holmes, however, is, I fancy,
+of a different way of thinking, and holds to this day that, if one could
+find the Grecian girl, one might learn how the wrongs of herself and her
+brother came to be avenged.
+
+
+
+
+Adventure X. The Naval Treaty
+
+
+The July which immediately succeeded my marriage was made memorable
+by three cases of interest, in which I had the privilege of being
+associated with Sherlock Holmes and of studying his methods. I find them
+recorded in my notes under the headings of "The Adventure of the Second
+Stain," "The Adventure of the Naval Treaty," and "The Adventure of the
+Tired Captain." The first of these, however, deals with interest of such
+importance and implicates so many of the first families in the kingdom
+that for many years it will be impossible to make it public. No case,
+however, in which Holmes was engaged has ever illustrated the value
+of his analytical methods so clearly or has impressed those who were
+associated with him so deeply. I still retain an almost verbatim report
+of the interview in which he demonstrated the true facts of the case
+to Monsieur Dubugue of the Paris police, and Fritz von Waldbaum, the
+well-known specialist of Dantzig, both of whom had wasted their energies
+upon what proved to be side-issues. The new century will have come,
+however, before the story can be safely told. Meanwhile I pass on to
+the second on my list, which promised also at one time to be of national
+importance, and was marked by several incidents which give it a quite
+unique character.
+
+During my school-days I had been intimately associated with a lad named
+Percy Phelps, who was of much the same age as myself, though he was two
+classes ahead of me. He was a very brilliant boy, and carried away every
+prize which the school had to offer, finished his exploits by winning
+a scholarship which sent him on to continue his triumphant career at
+Cambridge. He was, I remember, extremely well connected, and even when
+we were all little boys together we knew that his mother's brother
+was Lord Holdhurst, the great conservative politician. This gaudy
+relationship did him little good at school. On the contrary, it seemed
+rather a piquant thing to us to chevy him about the playground and hit
+him over the shins with a wicket. But it was another thing when he
+came out into the world. I heard vaguely that his abilities and the
+influences which he commanded had won him a good position at the Foreign
+Office, and then he passed completely out of my mind until the following
+letter recalled his existence:
+
+
+Briarbrae, Woking. My dear Watson,--I have no doubt that you can
+remember "Tadpole" Phelps, who was in the fifth form when you were in
+the third. It is possible even that you may have heard that through my
+uncle's influence I obtained a good appointment at the Foreign Office,
+and that I was in a situation of trust and honor until a horrible
+misfortune came suddenly to blast my career.
+
+There is no use writing of the details of that dreadful event. In the
+event of your acceding to my request it is probably that I shall have
+to narrate them to you. I have only just recovered from nine weeks of
+brain-fever, and am still exceedingly weak. Do you think that you could
+bring your friend Mr. Holmes down to see me? I should like to have his
+opinion of the case, though the authorities assure me that nothing more
+can be done. Do try to bring him down, and as soon as possible. Every
+minute seems an hour while I live in this state of horrible suspense.
+Assure him that if I have not asked his advice sooner it was not because
+I did not appreciate his talents, but because I have been off my head
+ever since the blow fell. Now I am clear again, though I dare not think
+of it too much for fear of a relapse. I am still so weak that I have to
+write, as you see, by dictating. Do try to bring him.
+
+Your old school-fellow,
+
+Percy Phelps.
+
+
+There was something that touched me as I read this letter, something
+pitiable in the reiterated appeals to bring Holmes. So moved was I
+that even had it been a difficult matter I should have tried it, but
+of course I knew well that Holmes loved his art, so that he was ever
+as ready to bring his aid as his client could be to receive it. My wife
+agreed with me that not a moment should be lost in laying the matter
+before him, and so within an hour of breakfast-time I found myself back
+once more in the old rooms in Baker Street.
+
+Holmes was seated at his side-table clad in his dressing-gown, and
+working hard over a chemical investigation. A large curved retort
+was boiling furiously in the bluish flame of a Bunsen burner, and the
+distilled drops were condensing into a two-litre measure. My friend
+hardly glanced up as I entered, and I, seeing that his investigation
+must be of importance, seated myself in an arm-chair and waited. He
+dipped into this bottle or that, drawing out a few drops of each with
+his glass pipette, and finally brought a test-tube containing a solution
+over to the table. In his right hand he held a slip of litmus-paper.
+
+"You come at a crisis, Watson," said he. "If this paper remains blue,
+all is well. If it turns red, it means a man's life." He dipped it into
+the test-tube and it flushed at once into a dull, dirty crimson. "Hum!
+I thought as much!" he cried. "I will be at your service in an instant,
+Watson. You will find tobacco in the Persian slipper." He turned to his
+desk and scribbled off several telegrams, which were handed over to the
+page-boy. Then he threw himself down into the chair opposite, and drew
+up his knees until his fingers clasped round his long, thin shins.
+
+"A very commonplace little murder," said he. "You've got something
+better, I fancy. You are the stormy petrel of crime, Watson. What is
+it?"
+
+I handed him the letter, which he read with the most concentrated
+attention.
+
+"It does not tell us very much, does it?" he remarked, as he handed it
+back to me.
+
+"Hardly anything."
+
+"And yet the writing is of interest."
+
+"But the writing is not his own."
+
+"Precisely. It is a woman's."
+
+"A man's surely," I cried.
+
+"No, a woman's, and a woman of rare character. You see, at the
+commencement of an investigation it is something to know that your
+client is in close contact with some one who, for good or evil, has an
+exceptional nature. My interest is already awakened in the case. If you
+are ready we will start at once for Woking, and see this diplomatist who
+is in such evil case, and the lady to whom he dictates his letters."
+
+We were fortunate enough to catch an early train at Waterloo, and in
+a little under an hour we found ourselves among the fir-woods and
+the heather of Woking. Briarbrae proved to be a large detached house
+standing in extensive grounds within a few minutes' walk of the station.
+On sending in our cards we were shown into an elegantly appointed
+drawing-room, where we were joined in a few minutes by a rather stout
+man who received us with much hospitality. His age may have been nearer
+forty than thirty, but his cheeks were so ruddy and his eyes so merry
+that he still conveyed the impression of a plump and mischievous boy.
+
+"I am so glad that you have come," said he, shaking our hands with
+effusion. "Percy has been inquiring for you all morning. Ah, poor old
+chap, he clings to any straw! His father and his mother asked me to see
+you, for the mere mention of the subject is very painful to them."
+
+"We have had no details yet," observed Holmes. "I perceive that you are
+not yourself a member of the family."
+
+Our acquaintance looked surprised, and then, glancing down, he began to
+laugh.
+
+"Of course you saw the J H monogram on my locket," said he. "For a
+moment I thought you had done something clever. Joseph Harrison is my
+name, and as Percy is to marry my sister Annie I shall at least be a
+relation by marriage. You will find my sister in his room, for she has
+nursed him hand-and-foot this two months back. Perhaps we'd better go in
+at once, for I know how impatient he is."
+
+The chamber in which we were shown was on the same floor as the
+drawing-room. It was furnished partly as a sitting and partly as a
+bedroom, with flowers arranged daintily in every nook and corner. A
+young man, very pale and worn, was lying upon a sofa near the open
+window, through which came the rich scent of the garden and the balmy
+summer air. A woman was sitting beside him, who rose as we entered.
+
+"Shall I leave, Percy?" she asked.
+
+He clutched her hand to detain her. "How are you, Watson?" said he,
+cordially. "I should never have known you under that moustache, and I
+dare say you would not be prepared to swear to me. This I presume is
+your celebrated friend, Mr. Sherlock Holmes?"
+
+I introduced him in a few words, and we both sat down. The stout young
+man had left us, but his sister still remained with her hand in that of
+the invalid. She was a striking-looking woman, a little short and
+thick for symmetry, but with a beautiful olive complexion, large, dark,
+Italian eyes, and a wealth of deep black hair. Her rich tints made the
+white face of her companion the more worn and haggard by the contrast.
+
+"I won't waste your time," said he, raising himself upon the sofa.
+"I'll plunge into the matter without further preamble. I was a happy
+and successful man, Mr. Holmes, and on the eve of being married, when a
+sudden and dreadful misfortune wrecked all my prospects in life.
+
+"I was, as Watson may have told you, in the Foreign Office, and
+through the influences of my uncle, Lord Holdhurst, I rose rapidly to
+a responsible position. When my uncle became foreign minister in this
+administration he gave me several missions of trust, and as I always
+brought them to a successful conclusion, he came at last to have the
+utmost confidence in my ability and tact.
+
+"Nearly ten weeks ago--to be more accurate, on the 23d of May--he called
+me into his private room, and, after complimenting me on the good work
+which I had done, he informed me that he had a new commission of trust
+for me to execute.
+
+"'This,' said he, taking a gray roll of paper from his bureau, 'is the
+original of that secret treaty between England and Italy of which, I
+regret to say, some rumors have already got into the public press. It is
+of enormous importance that nothing further should leak out. The French
+or the Russian embassy would pay an immense sum to learn the contents
+of these papers. They should not leave my bureau were it not that it
+is absolutely necessary to have them copied. You have a desk in your
+office?"
+
+"'Yes, sir.'
+
+"'Then take the treaty and lock it up there. I shall give directions
+that you may remain behind when the others go, so that you may copy
+it at your leisure without fear of being overlooked. When you have
+finished, relock both the original and the draft in the desk, and hand
+them over to me personally to-morrow morning.'
+
+"I took the papers and--"
+
+"Excuse me an instant," said Holmes. "Were you alone during this
+conversation?"
+
+"Absolutely."
+
+"In a large room?"
+
+"Thirty feet each way."
+
+"In the centre?"
+
+"Yes, about it."
+
+"And speaking low?"
+
+"My uncle's voice is always remarkably low. I hardly spoke at all."
+
+"Thank you," said Holmes, shutting his eyes; "pray go on."
+
+"I did exactly what he indicated, and waited until the other clerks had
+departed. One of them in my room, Charles Gorot, had some arrears
+of work to make up, so I left him there and went out to dine. When I
+returned he was gone. I was anxious to hurry my work, for I knew that
+Joseph--the Mr. Harrison whom you saw just now--was in town, and that he
+would travel down to Woking by the eleven-o'clock train, and I wanted if
+possible to catch it.
+
+"When I came to examine the treaty I saw at once that it was of such
+importance that my uncle had been guilty of no exaggeration in what
+he had said. Without going into details, I may say that it defined the
+position of Great Britain towards the Triple Alliance, and fore-shadowed
+the policy which this country would pursue in the event of the
+French fleet gaining a complete ascendancy over that of Italy in the
+Mediterranean. The questions treated in it were purely naval. At the end
+were the signatures of the high dignitaries who had signed it. I glanced
+my eyes over it, and then settled down to my task of copying.
+
+"It was a long document, written in the French language, and containing
+twenty-six separate articles. I copied as quickly as I could, but at
+nine o'clock I had only done nine articles, and it seemed hopeless for
+me to attempt to catch my train. I was feeling drowsy and stupid, partly
+from my dinner and also from the effects of a long day's work. A cup of
+coffee would clear my brain. A commissionnaire remains all night in a
+little lodge at the foot of the stairs, and is in the habit of making
+coffee at his spirit-lamp for any of the officials who may be working
+over time. I rang the bell, therefore, to summon him.
+
+"To my surprise, it was a woman who answered the summons, a large,
+coarse-faced, elderly woman, in an apron. She explained that she was the
+commissionnaire's wife, who did the charing, and I gave her the order
+for the coffee.
+
+"I wrote two more articles and then, feeling more drowsy than ever, I
+rose and walked up and down the room to stretch my legs. My coffee had
+not yet come, and I wondered what was the cause of the delay could be.
+Opening the door, I started down the corridor to find out. There was a
+straight passage, dimly lighted, which led from the room in which I
+had been working, and was the only exit from it. It ended in a curving
+staircase, with the commissionnaire's lodge in the passage at the
+bottom. Half way down this staircase is a small landing, with another
+passage running into it at right angles. This second one leads by means
+of a second small stair to a side door, used by servants, and also as
+a short cut by clerks when coming from Charles Street. Here is a rough
+chart of the place."
+
+"Thank you. I think that I quite follow you," said Sherlock Holmes.
+
+"It is of the utmost importance that you should notice this point.
+I went down the stairs and into the hall, where I found the
+commissionnaire fast asleep in his box, with the kettle boiling
+furiously upon the spirit-lamp. I took off the kettle and blew out the
+lamp, for the water was spurting over the floor. Then I put out my hand
+and was about to shake the man, who was still sleeping soundly, when a
+bell over his head rang loudly, and he woke with a start.
+
+"'Mr. Phelps, sir!' said he, looking at me in bewilderment.
+
+"'I came down to see if my coffee was ready.'
+
+"'I was boiling the kettle when I fell asleep, sir.' He looked at me and
+then up at the still quivering bell with an ever-growing astonishment
+upon his face.
+
+"'If you was here, sir, then who rang the bell?' he asked.
+
+"'The bell!' I cried. 'What bell is it?'
+
+"'It's the bell of the room you were working in.'
+
+"A cold hand seemed to close round my heart. Some one, then, was in that
+room where my precious treaty lay upon the table. I ran frantically up
+the stair and along the passage. There was no one in the corridors, Mr.
+Holmes. There was no one in the room. All was exactly as I left it, save
+only that the papers which had been committed to my care had been taken
+from the desk on which they lay. The copy was there, and the original
+was gone."
+
+Holmes sat up in his chair and rubbed his hands. I could see that the
+problem was entirely to his heart. "Pray, what did you do then?" he
+murmured.
+
+"I recognized in an instant that the thief must have come up the stairs
+from the side door. Of course I must have met him if he had come the
+other way."
+
+"You were satisfied that he could not have been concealed in the room
+all the time, or in the corridor which you have just described as dimly
+lighted?"
+
+"It is absolutely impossible. A rat could not conceal himself either in
+the room or the corridor. There is no cover at all."
+
+"Thank you. Pray proceed."
+
+"The commissionnaire, seeing by my pale face that something was to be
+feared, had followed me upstairs. Now we both rushed along the corridor
+and down the steep steps which led to Charles Street. The door at the
+bottom was closed, but unlocked. We flung it open and rushed out. I can
+distinctly remember that as we did so there came three chimes from a
+neighboring clock. It was quarter to ten."
+
+"That is of enormous importance," said Holmes, making a note upon his
+shirt-cuff.
+
+"The night was very dark, and a thin, warm rain was falling. There was
+no one in Charles Street, but a great traffic was going on, as usual, in
+Whitehall, at the extremity. We rushed along the pavement, bare-headed
+as we were, and at the far corner we found a policeman standing.
+
+"'A robbery has been committed,' I gasped. 'A document of immense value
+has been stolen from the Foreign Office. Has any one passed this way?'
+
+"'I have been standing here for a quarter of an hour, sir,' said he;
+'only one person has passed during that time--a woman, tall and elderly,
+with a Paisley shawl.'
+
+"'Ah, that is only my wife,' cried the commissionnaire; 'has no one else
+passed?'
+
+"'No one.'
+
+"'Then it must be the other way that the thief took,' cried the fellow,
+tugging at my sleeve.
+
+"'But I was not satisfied, and the attempts which he made to draw me
+away increased my suspicions.
+
+"'Which way did the woman go?' I cried.
+
+"'I don't know, sir. I noticed her pass, but I had no special reason for
+watching her. She seemed to be in a hurry.'
+
+"'How long ago was it?'
+
+"'Oh, not very many minutes.'
+
+"'Within the last five?'
+
+"'Well, it could not be more than five.'
+
+"'You're only wasting your time, sir, and every minute now is of
+importance,' cried the commissionnaire; 'take my word for it that my old
+woman has nothing to do with it, and come down to the other end of the
+street. Well, if you won't, I will.' And with that he rushed off in the
+other direction.
+
+"But I was after him in an instant and caught him by the sleeve.
+
+"'Where do you live?' said I.
+
+"'16 Ivy Lane, Brixton,' he answered. 'But don't let yourself be drawn
+away upon a false scent, Mr. Phelps. Come to the other end of the street
+and let us see if we can hear of anything.'
+
+"Nothing was to be lost by following his advice. With the policeman we
+both hurried down, but only to find the street full of traffic, many
+people coming and going, but all only too eager to get to a place of
+safety upon so wet a night. There was no lounger who could tell us who
+had passed.
+
+"Then we returned to the office, and searched the stairs and the passage
+without result. The corridor which led to the room was laid down with
+a kind of creamy linoleum which shows an impression very easily. We
+examined it very carefully, but found no outline of any footmark."
+
+"Had it been raining all evening?"
+
+"Since about seven."
+
+"How is it, then, that the woman who came into the room about nine left
+no traces with her muddy boots?"
+
+"I am glad you raised the point. It occurred to me at the time.
+The charwomen are in the habit of taking off their boots at the
+commissionnaire's office, and putting on list slippers."
+
+"That is very clear. There were no marks, then, though the night was a
+wet one? The chain of events is certainly one of extraordinary interest.
+What did you do next?
+
+"We examined the room also. There is no possibility of a secret door,
+and the windows are quite thirty feet from the ground. Both of them
+were fastened on the inside. The carpet prevents any possibility of a
+trap-door, and the ceiling is of the ordinary whitewashed kind. I will
+pledge my life that whoever stole my papers could only have come through
+the door."
+
+"How about the fireplace?"
+
+"They use none. There is a stove. The bell-rope hangs from the wire just
+to the right of my desk. Whoever rang it must have come right up to the
+desk to do it. But why should any criminal wish to ring the bell? It is
+a most insoluble mystery."
+
+"Certainly the incident was unusual. What were your next steps? You
+examined the room, I presume, to see if the intruder had left any
+traces--any cigar-end or dropped glove or hairpin or other trifle?"
+
+"There was nothing of the sort."
+
+"No smell?"
+
+"Well, we never thought of that."
+
+"Ah, a scent of tobacco would have been worth a great deal to us in such
+an investigation."
+
+"I never smoke myself, so I think I should have observed it if there had
+been any smell of tobacco. There was absolutely no clue of any kind. The
+only tangible fact was that the commissionnaire's wife--Mrs. Tangey was
+the name--had hurried out of the place. He could give no explanation
+save that it was about the time when the woman always went home. The
+policeman and I agreed that our best plan would be to seize the woman
+before she could get rid of the papers, presuming that she had them.
+
+"The alarm had reached Scotland Yard by this time, and Mr. Forbes, the
+detective, came round at once and took up the case with a great deal of
+energy. We hired a hansom, and in half an hour we were at the address
+which had been given to us. A young woman opened the door, who proved to
+be Mrs. Tangey's eldest daughter. Her mother had not come back yet, and
+we were shown into the front room to wait.
+
+"About ten minutes later a knock came at the door, and here we made the
+one serious mistake for which I blame myself. Instead of opening the
+door ourselves, we allowed the girl to do so. We heard her say, 'Mother,
+there are two men in the house waiting to see you,' and an instant
+afterwards we heard the patter of feet rushing down the passage. Forbes
+flung open the door, and we both ran into the back room or kitchen, but
+the woman had got there before us. She stared at us with defiant
+eyes, and then, suddenly recognizing me, an expression of absolute
+astonishment came over her face.
+
+"'Why, if it isn't Mr. Phelps, of the office!' she cried.
+
+"'Come, come, who did you think we were when you ran away from us?'
+asked my companion.
+
+"'I thought you were the brokers,' said she, 'we have had some trouble
+with a tradesman.'
+
+"'That's not quite good enough,' answered Forbes. 'We have reason to
+believe that you have taken a paper of importance from the Foreign
+Office, and that you ran in here to dispose of it. You must come back
+with us to Scotland Yard to be searched.'
+
+"It was in vain that she protested and resisted. A four-wheeler was
+brought, and we all three drove back in it. We had first made an
+examination of the kitchen, and especially of the kitchen fire, to see
+whether she might have made away with the papers during the instant that
+she was alone. There were no signs, however, of any ashes or scraps.
+When we reached Scotland Yard she was handed over at once to the female
+searcher. I waited in an agony of suspense until she came back with her
+report. There were no signs of the papers.
+
+"Then for the first time the horror of my situation came in its full
+force. Hitherto I had been acting, and action had numbed thought. I had
+been so confident of regaining the treaty at once that I had not dared
+to think of what would be the consequence if I failed to do so. But
+now there was nothing more to be done, and I had leisure to realize
+my position. It was horrible. Watson there would tell you that I was a
+nervous, sensitive boy at school. It is my nature. I thought of my uncle
+and of his colleagues in the Cabinet, of the shame which I had brought
+upon him, upon myself, upon every one connected with me. What though I
+was the victim of an extraordinary accident? No allowance is made
+for accidents where diplomatic interests are at stake. I was ruined,
+shamefully, hopelessly ruined. I don't know what I did. I fancy I must
+have made a scene. I have a dim recollection of a group of officials who
+crowded round me, endeavoring to soothe me. One of them drove down with
+me to Waterloo, and saw me into the Woking train. I believe that he
+would have come all the way had it not been that Dr. Ferrier, who lives
+near me, was going down by that very train. The doctor most kindly took
+charge of me, and it was well he did so, for I had a fit in the station,
+and before we reached home I was practically a raving maniac.
+
+"You can imagine the state of things here when they were roused from
+their beds by the doctor's ringing and found me in this condition. Poor
+Annie here and my mother were broken-hearted. Dr. Ferrier had just heard
+enough from the detective at the station to be able to give an idea of
+what had happened, and his story did not mend matters. It was evident to
+all that I was in for a long illness, so Joseph was bundled out of this
+cheery bedroom, and it was turned into a sick-room for me. Here I have
+lain, Mr. Holmes, for over nine weeks, unconscious, and raving with
+brain-fever. If it had not been for Miss Harrison here and for the
+doctor's care I should not be speaking to you now. She has nursed me by
+day and a hired nurse has looked after me by night, for in my mad fits
+I was capable of anything. Slowly my reason has cleared, but it is only
+during the last three days that my memory has quite returned. Sometimes
+I wish that it never had. The first thing that I did was to wire to
+Mr. Forbes, who had the case in hand. He came out, and assures me that,
+though everything has been done, no trace of a clue has been discovered.
+The commissionnaire and his wife have been examined in every way without
+any light being thrown upon the matter. The suspicions of the police
+then rested upon young Gorot, who, as you may remember, stayed over time
+in the office that night. His remaining behind and his French name were
+really the only two points which could suggest suspicion; but, as a
+matter of fact, I did not begin work until he had gone, and his people
+are of Huguenot extraction, but as English in sympathy and tradition as
+you and I are. Nothing was found to implicate him in any way, and there
+the matter dropped. I turn to you, Mr. Holmes, as absolutely my last
+hope. If you fail me, then my honor as well as my position are forever
+forfeited."
+
+The invalid sank back upon his cushions, tired out by this long recital,
+while his nurse poured him out a glass of some stimulating medicine.
+Holmes sat silently, with his head thrown back and his eyes closed, in
+an attitude which might seem listless to a stranger, but which I knew
+betokened the most intense self-absorption.
+
+"You statement has been so explicit," said he at last, "that you have
+really left me very few questions to ask. There is one of the very
+utmost importance, however. Did you tell any one that you had this
+special task to perform?"
+
+"No one."
+
+"Not Miss Harrison here, for example?"
+
+"No. I had not been back to Woking between getting the order and
+executing the commission."
+
+"And none of your people had by chance been to see you?"
+
+"None."
+
+"Did any of them know their way about in the office?"
+
+"Oh, yes, all of them had been shown over it."
+
+"Still, of course, if you said nothing to any one about the treaty these
+inquiries are irrelevant."
+
+"I said nothing."
+
+"Do you know anything of the commissionnaire?"
+
+"Nothing except that he is an old soldier."
+
+"What regiment?"
+
+"Oh, I have heard--Coldstream Guards."
+
+"Thank you. I have no doubt I can get details from Forbes. The
+authorities are excellent at amassing facts, though they do not always
+use them to advantage. What a lovely thing a rose is!"
+
+He walked past the couch to the open window, and held up the drooping
+stalk of a moss-rose, looking down at the dainty blend of crimson and
+green. It was a new phase of his character to me, for I had never before
+seen him show any keen interest in natural objects.
+
+"There is nothing in which deduction is so necessary as in religion,"
+said he, leaning with his back against the shutters. "It can be built
+up as an exact science by the reasoner. Our highest assurance of the
+goodness of Providence seems to me to rest in the flowers. All other
+things, our powers our desires, our food, are all really necessary for
+our existence in the first instance. But this rose is an extra. Its
+smell and its color are an embellishment of life, not a condition of it.
+It is only goodness which gives extras, and so I say again that we have
+much to hope from the flowers."
+
+Percy Phelps and his nurse looked at Holmes during this demonstration
+with surprise and a good deal of disappointment written upon their
+faces. He had fallen into a reverie, with the moss-rose between his
+fingers. It had lasted some minutes before the young lady broke in upon
+it.
+
+"Do you see any prospect of solving this mystery, Mr. Holmes?" she
+asked, with a touch of asperity in her voice.
+
+"Oh, the mystery!" he answered, coming back with a start to the
+realities of life. "Well, it would be absurd to deny that the case is
+a very abstruse and complicated one, but I can promise you that I will
+look into the matter and let you know any points which may strike me."
+
+"Do you see any clue?"
+
+"You have furnished me with seven, but, of course, I must test them
+before I can pronounce upon their value."
+
+"You suspect some one?"
+
+"I suspect myself."
+
+"What!"
+
+"Of coming to conclusions too rapidly."
+
+"Then go to London and test your conclusions."
+
+"Your advice is very excellent, Miss Harrison," said Holmes, rising. "I
+think, Watson, we cannot do better. Do not allow yourself to indulge in
+false hopes, Mr. Phelps. The affair is a very tangled one."
+
+"I shall be in a fever until I see you again," cried the diplomatist.
+
+"Well, I'll come out by the same train to-morrow, though it's more than
+likely that my report will be a negative one."
+
+"God bless you for promising to come," cried our client. "It gives me
+fresh life to know that something is being done. By the way, I have had
+a letter from Lord Holdhurst."
+
+"Ha! What did he say?"
+
+"He was cold, but not harsh. I dare say my severe illness prevented
+him from being that. He repeated that the matter was of the utmost
+importance, and added that no steps would be taken about my future--by
+which he means, of course, my dismissal--until my health was restored
+and I had an opportunity of repairing my misfortune."
+
+"Well, that was reasonable and considerate," said Holmes. "Come, Watson,
+for we have a good day's work before us in town."
+
+Mr. Joseph Harrison drove us down to the station, and we were soon
+whirling up in a Portsmouth train. Holmes was sunk in profound thought,
+and hardly opened his mouth until we had passed Clapham Junction.
+
+"It's a very cheery thing to come into London by any of these lines
+which run high, and allow you to look down upon the houses like this."
+
+I thought he was joking, for the view was sordid enough, but he soon
+explained himself.
+
+"Look at those big, isolated clumps of building rising up above the
+slates, like brick islands in a lead-colored sea."
+
+"The board-schools."
+
+"Light-houses, my boy! Beacons of the future! Capsules with hundreds of
+bright little seeds in each, out of which will spring the wise, better
+England of the future. I suppose that man Phelps does not drink?"
+
+"I should not think so."
+
+"Nor should I, but we are bound to take every possibility into account.
+The poor devil has certainly got himself into very deep water, and it's
+a question whether we shall ever be able to get him ashore. What did you
+think of Miss Harrison?"
+
+"A girl of strong character."
+
+"Yes, but she is a good sort, or I am mistaken. She and her brother are
+the only children of an iron-master somewhere up Northumberland way. He
+got engaged to her when traveling last winter, and she came down to
+be introduced to his people, with her brother as escort. Then came
+the smash, and she stayed on to nurse her lover, while brother Joseph,
+finding himself pretty snug, stayed on too. I've been making a few
+independent inquiries, you see. But to-day must be a day of inquiries."
+
+"My practice--" I began.
+
+"Oh, if you find your own cases more interesting than mine--" said
+Holmes, with some asperity.
+
+"I was going to say that my practice could get along very well for a day
+or two, since it is the slackest time in the year."
+
+"Excellent," said he, recovering his good-humor. "Then we'll look into
+this matter together. I think that we should begin by seeing Forbes.
+He can probably tell us all the details we want until we know from what
+side the case is to be approached."
+
+"You said you had a clue?"
+
+"Well, we have several, but we can only test their value by further
+inquiry. The most difficult crime to track is the one which is
+purposeless. Now this is not purposeless. Who is it who profits by it?
+There is the French ambassador, there is the Russian, there is whoever
+might sell it to either of these, and there is Lord Holdhurst."
+
+"Lord Holdhurst!"
+
+"Well, it is just conceivable that a statesman might find himself in
+a position where he was not sorry to have such a document accidentally
+destroyed."
+
+"Not a statesman with the honorable record of Lord Holdhurst?"
+
+"It is a possibility and we cannot afford to disregard it. We shall see
+the noble lord to-day and find out if he can tell us anything. Meanwhile
+I have already set inquiries on foot."
+
+"Already?"
+
+"Yes, I sent wires from Woking station to every evening paper in London.
+This advertisement will appear in each of them."
+
+He handed over a sheet torn from a note-book. On it was scribbled in
+pencil: "L10 reward. The number of the cab which dropped a fare at or
+about the door of the Foreign Office in Charles Street at quarter to ten
+in the evening of May 23d. Apply 221 B, Baker Street."
+
+"You are confident that the thief came in a cab?"
+
+"If not, there is no harm done. But if Mr. Phelps is correct in stating
+that there is no hiding-place either in the room or the corridors, then
+the person must have come from outside. If he came from outside on so
+wet a night, and yet left no trace of damp upon the linoleum, which
+was examined within a few minutes of his passing, then it is exceeding
+probable that he came in a cab. Yes, I think that we may safely deduce a
+cab."
+
+"It sounds plausible."
+
+"That is one of the clues of which I spoke. It may lead us to something.
+And then, of course, there is the bell--which is the most distinctive
+feature of the case. Why should the bell ring? Was it the thief who did
+it out of bravado? Or was it some one who was with the thief who did it
+in order to prevent the crime? Or was it an accident? Or was it--?" He
+sank back into the state of intense and silent thought from which he
+had emerged; but it seemed to me, accustomed as I was to his every mood,
+that some new possibility had dawned suddenly upon him.
+
+It was twenty past three when we reached our terminus, and after a hasty
+luncheon at the buffet we pushed on at once to Scotland Yard. Holmes
+had already wired to Forbes, and we found him waiting to receive us--a
+small, foxy man with a sharp but by no means amiable expression. He
+was decidedly frigid in his manner to us, especially when he heard the
+errand upon which we had come.
+
+"I've heard of your methods before now, Mr. Holmes," said he, tartly.
+"You are ready enough to use all the information that the police can lay
+at your disposal, and then you try to finish the case yourself and bring
+discredit on them."
+
+"On the contrary," said Holmes, "out of my last fifty-three cases my
+name has only appeared in four, and the police have had all the credit
+in forty-nine. I don't blame you for not knowing this, for you are young
+and inexperienced, but if you wish to get on in your new duties you will
+work with me and not against me."
+
+"I'd be very glad of a hint or two," said the detective, changing his
+manner. "I've certainly had no credit from the case so far."
+
+"What steps have you taken?"
+
+"Tangey, the commissionnaire, has been shadowed. He left the Guards with
+a good character and we can find nothing against him. His wife is a bad
+lot, though. I fancy she knows more about this than appears."
+
+"Have you shadowed her?"
+
+"We have set one of our women on to her. Mrs. Tangey drinks, and our
+woman has been with her twice when she was well on, but she could get
+nothing out of her."
+
+"I understand that they have had brokers in the house?"
+
+"Yes, but they were paid off."
+
+"Where did the money come from?"
+
+"That was all right. His pension was due. They have not shown any sign
+of being in funds."
+
+"What explanation did she give of having answered the bell when Mr.
+Phelps rang for the coffee?"
+
+"She said that he husband was very tired and she wished to relieve him."
+
+"Well, certainly that would agree with his being found a little later
+asleep in his chair. There is nothing against them then but the woman's
+character. Did you ask her why she hurried away that night? Her haste
+attracted the attention of the police constable."
+
+"She was later than usual and wanted to get home."
+
+"Did you point out to her that you and Mr. Phelps, who started at least
+twenty minutes after her, got home before her?"
+
+"She explains that by the difference between a 'bus and a hansom."
+
+"Did she make it clear why, on reaching her house, she ran into the back
+kitchen?"
+
+"Because she had the money there with which to pay off the brokers."
+
+"She has at least an answer for everything. Did you ask her whether in
+leaving she met any one or saw any one loitering about Charles Street?"
+
+"She saw no one but the constable."
+
+"Well, you seem to have cross-examined her pretty thoroughly. What else
+have you done?"
+
+"The clerk Gorot has been shadowed all these nine weeks, but without
+result. We can show nothing against him."
+
+"Anything else?"
+
+"Well, we have nothing else to go upon--no evidence of any kind."
+
+"Have you formed a theory about how that bell rang?"
+
+"Well, I must confess that it beats me. It was a cool hand, whoever it
+was, to go and give the alarm like that."
+
+"Yes, it was queer thing to do. Many thanks to you for what you have
+told me. If I can put the man into your hands you shall hear from me.
+Come along, Watson."
+
+"Where are we going to now?" I asked, as we left the office.
+
+"We are now going to interview Lord Holdhurst, the cabinet minister and
+future premier of England."
+
+We were fortunate in finding that Lord Holdhurst was still in his
+chambers in Downing Street, and on Holmes sending in his card we were
+instantly shown up. The statesman received us with that old-fashioned
+courtesy for which he is remarkable, and seated us on the two luxuriant
+lounges on either side of the fireplace. Standing on the rug between us,
+with his slight, tall figure, his sharp features, thoughtful face, and
+curling hair prematurely tinged with gray, he seemed to represent that
+not too common type, a nobleman who is in truth noble.
+
+"Your name is very familiar to me, Mr. Holmes," said he, smiling. "And,
+of course, I cannot pretend to be ignorant of the object of your visit.
+There has only been one occurrence in these offices which could call for
+your attention. In whose interest are you acting, may I ask?"
+
+"In that of Mr. Percy Phelps," answered Holmes.
+
+"Ah, my unfortunate nephew! You can understand that our kinship makes
+it the more impossible for me to screen him in any way. I fear that the
+incident must have a very prejudicial effect upon his career."
+
+"But if the document is found?"
+
+"Ah, that, of course, would be different."
+
+"I had one or two questions which I wished to ask you, Lord Holdhurst."
+
+"I shall be happy to give you any information in my power."
+
+"Was it in this room that you gave your instructions as to the copying
+of the document?"
+
+"It was."
+
+"Then you could hardly have been overheard?"
+
+"It is out of the question."
+
+"Did you ever mention to any one that it was your intention to give any
+one the treaty to be copied?"
+
+"Never."
+
+"You are certain of that?"
+
+"Absolutely."
+
+"Well, since you never said so, and Mr. Phelps never said so, and nobody
+else knew anything of the matter, then the thief's presence in the room
+was purely accidental. He saw his chance and he took it."
+
+The statesman smiled. "You take me out of my province there," said he.
+
+Holmes considered for a moment. "There is another very important
+point which I wish to discuss with you," said he. "You feared, as I
+understand, that very grave results might follow from the details of
+this treaty becoming known."
+
+A shadow passed over the expressive face of the statesman. "Very grave
+results indeed."
+
+"Any have they occurred?"
+
+"Not yet."
+
+"If the treaty had reached, let us say, the French or Russian Foreign
+Office, you would expect to hear of it?"
+
+"I should," said Lord Holdhurst, with a wry face.
+
+"Since nearly ten weeks have elapsed, then, and nothing has been heard,
+it is not unfair to suppose that for some reason the treaty has not
+reached them."
+
+Lord Holdhurst shrugged his shoulders.
+
+"We can hardly suppose, Mr. Holmes, that the thief took the treaty in
+order to frame it and hang it up."
+
+"Perhaps he is waiting for a better price."
+
+"If he waits a little longer he will get no price at all. The treaty
+will cease to be secret in a few months."
+
+"That is most important," said Holmes. "Of course, it is a possible
+supposition that the thief has had a sudden illness--"
+
+"An attack of brain-fever, for example?" asked the statesman, flashing a
+swift glance at him.
+
+"I did not say so," said Holmes, imperturbably. "And now, Lord
+Holdhurst, we have already taken up too much of your valuable time, and
+we shall wish you good-day."
+
+"Every success to your investigation, be the criminal who it may,"
+answered the nobleman, as he bowed us out the door.
+
+"He's a fine fellow," said Holmes, as we came out into Whitehall. "But
+he has a struggle to keep up his position. He is far from rich and has
+many calls. You noticed, of course, that his boots had been resoled.
+Now, Watson, I won't detain you from your legitimate work any longer.
+I shall do nothing more to-day, unless I have an answer to my cab
+advertisement. But I should be extremely obliged to you if you would
+come down with me to Woking to-morrow, by the same train which we took
+yesterday."
+
+
+I met him accordingly next morning and we traveled down to Woking
+together. He had had no answer to his advertisement, he said, and no
+fresh light had been thrown upon the case. He had, when he so willed
+it, the utter immobility of countenance of a red Indian, and I could
+not gather from his appearance whether he was satisfied or not with
+the position of the case. His conversation, I remember, was about the
+Bertillon system of measurements, and he expressed his enthusiastic
+admiration of the French savant.
+
+We found our client still under the charge of his devoted nurse, but
+looking considerably better than before. He rose from the sofa and
+greeted us without difficulty when we entered.
+
+"Any news?" he asked, eagerly.
+
+"My report, as I expected, is a negative one," said Holmes. "I have seen
+Forbes, and I have seen your uncle, and I have set one or two trains of
+inquiry upon foot which may lead to something."
+
+"You have not lost heart, then?"
+
+"By no means."
+
+"God bless you for saying that!" cried Miss Harrison. "If we keep our
+courage and our patience the truth must come out."
+
+"We have more to tell you than you have for us," said Phelps, reseating
+himself upon the couch.
+
+"I hoped you might have something."
+
+"Yes, we have had an adventure during the night, and one which might
+have proved to be a serious one." His expression grew very grave as he
+spoke, and a look of something akin to fear sprang up in his eyes. "Do
+you know," said he, "that I begin to believe that I am the unconscious
+centre of some monstrous conspiracy, and that my life is aimed at as
+well as my honor?"
+
+"Ah!" cried Holmes.
+
+"It sounds incredible, for I have not, as far as I know, an enemy in
+the world. Yet from last night's experience I can come to no other
+conclusion."
+
+"Pray let me hear it."
+
+"You must know that last night was the very first night that I have ever
+slept without a nurse in the room. I was so much better that I thought
+I could dispense with one. I had a night-light burning, however. Well,
+about two in the morning I had sunk into a light sleep when I was
+suddenly aroused by a slight noise. It was like the sound which a mouse
+makes when it is gnawing a plank, and I lay listening to it for some
+time under the impression that it must come from that cause. Then it
+grew louder, and suddenly there came from the window a sharp metallic
+snick. I sat up in amazement. There could be no doubt what the sounds
+were now. The first ones had been caused by some one forcing an
+instrument through the slit between the sashes, and the second by the
+catch being pressed back.
+
+"There was a pause then for about ten minutes, as if the person were
+waiting to see whether the noise had awakened me. Then I heard a gentle
+creaking as the window was very slowly opened. I could stand it no
+longer, for my nerves are not what they used to be. I sprang out of bed
+and flung open the shutters. A man was crouching at the window. I could
+see little of him, for he was gone like a flash. He was wrapped in some
+sort of cloak which came across the lower part of his face. One thing
+only I am sure of, and that is that he had some weapon in his hand. It
+looked to me like a long knife. I distinctly saw the gleam of it as he
+turned to run."
+
+"This is most interesting," said Holmes. "Pray what did you do then?"
+
+"I should have followed him through the open window if I had been
+stronger. As it was, I rang the bell and roused the house. It took me
+some little time, for the bell rings in the kitchen and the servants all
+sleep upstairs. I shouted, however, and that brought Joseph down, and he
+roused the others. Joseph and the groom found marks on the bed outside
+the window, but the weather has been so dry lately that they found it
+hopeless to follow the trail across the grass. There's a place, however,
+on the wooden fence which skirts the road which shows signs, they tell
+me, as if some one had got over, and had snapped the top of the rail in
+doing so. I have said nothing to the local police yet, for I thought I
+had best have your opinion first."
+
+This tale of our client's appeared to have an extraordinary effect upon
+Sherlock Holmes. He rose from his chair and paced about the room in
+uncontrollable excitement.
+
+"Misfortunes never come single," said Phelps, smiling, though it was
+evident that his adventure had somewhat shaken him.
+
+"You have certainly had your share," said Holmes. "Do you think you
+could walk round the house with me?"
+
+"Oh, yes, I should like a little sunshine. Joseph will come, too."
+
+"And I also," said Miss Harrison.
+
+"I am afraid not," said Holmes, shaking his head. "I think I must ask
+you to remain sitting exactly where you are."
+
+The young lady resumed her seat with an air of displeasure. Her brother,
+however, had joined us and we set off all four together. We passed round
+the lawn to the outside of the young diplomatist's window. There were,
+as he had said, marks upon the bed, but they were hopelessly blurred and
+vague. Holmes stopped over them for an instant, and then rose shrugging
+his shoulders.
+
+"I don't think any one could make much of this," said he. "Let us go
+round the house and see why this particular room was chosen by the
+burglar. I should have thought those larger windows of the drawing-room
+and dining-room would have had more attractions for him."
+
+"They are more visible from the road," suggested Mr. Joseph Harrison.
+
+"Ah, yes, of course. There is a door here which he might have attempted.
+What is it for?"
+
+"It is the side entrance for trades-people. Of course it is locked at
+night."
+
+"Have you ever had an alarm like this before?"
+
+"Never," said our client.
+
+"Do you keep plate in the house, or anything to attract burglars?"
+
+"Nothing of value."
+
+Holmes strolled round the house with his hands in his pockets and a
+negligent air which was unusual with him.
+
+"By the way," said he to Joseph Harrison, "you found some place, I
+understand, where the fellow scaled the fence. Let us have a look at
+that!"
+
+The plump young man led us to a spot where the top of one of the wooden
+rails had been cracked. A small fragment of the wood was hanging down.
+Holmes pulled it off and examined it critically.
+
+"Do you think that was done last night? It looks rather old, does it
+not?"
+
+"Well, possibly so."
+
+"There are no marks of any one jumping down upon the other side. No, I
+fancy we shall get no help here. Let us go back to the bedroom and talk
+the matter over."
+
+Percy Phelps was walking very slowly, leaning upon the arm of his future
+brother-in-law. Holmes walked swiftly across the lawn, and we were at
+the open window of the bedroom long before the others came up.
+
+"Miss Harrison," said Holmes, speaking with the utmost intensity of
+manner, "you must stay where you are all day. Let nothing prevent you
+from staying where you are all day. It is of the utmost importance."
+
+"Certainly, if you wish it, Mr. Holmes," said the girl in astonishment.
+
+"When you go to bed lock the door of this room on the outside and keep
+the key. Promise to do this."
+
+"But Percy?"
+
+"He will come to London with us."
+
+"And am I to remain here?"
+
+"It is for his sake. You can serve him. Quick! Promise!"
+
+She gave a quick nod of assent just as the other two came up.
+
+"Why do you sit moping there, Annie?" cried her brother. "Come out into
+the sunshine!"
+
+"No, thank you, Joseph. I have a slight headache and this room is
+deliciously cool and soothing."
+
+"What do you propose now, Mr. Holmes?" asked our client.
+
+"Well, in investigating this minor affair we must not lose sight of our
+main inquiry. It would be a very great help to me if you would come up
+to London with us."
+
+"At once?"
+
+"Well, as soon as you conveniently can. Say in an hour."
+
+"I feel quite strong enough, if I can really be of any help."
+
+"The greatest possible."
+
+"Perhaps you would like me to stay there to-night?"
+
+"I was just going to propose it."
+
+"Then, if my friend of the night comes to revisit me, he will find the
+bird flown. We are all in your hands, Mr. Holmes, and you must tell us
+exactly what you would like done. Perhaps you would prefer that Joseph
+came with us so as to look after me?"
+
+"Oh, no; my friend Watson is a medical man, you know, and he'll look
+after you. We'll have our lunch here, if you will permit us, and then we
+shall all three set off for town together."
+
+It was arranged as he suggested, though Miss Harrison excused herself
+from leaving the bedroom, in accordance with Holmes's suggestion. What
+the object of my friend's manoeuvres was I could not conceive, unless it
+were to keep the lady away from Phelps, who, rejoiced by his
+returning health and by the prospect of action, lunched with us in the
+dining-room. Holmes had a still more startling surprise for us, however,
+for, after accompanying us down to the station and seeing us into
+our carriage, he calmly announced that he had no intention of leaving
+Woking.
+
+"There are one or two small points which I should desire to clear up
+before I go," said he. "Your absence, Mr. Phelps, will in some ways
+rather assist me. Watson, when you reach London you would oblige me by
+driving at once to Baker Street with our friend here, and remaining
+with him until I see you again. It is fortunate that you are old
+school-fellows, as you must have much to talk over. Mr. Phelps can
+have the spare bedroom to-night, and I will be with you in time for
+breakfast, for there is a train which will take me into Waterloo at
+eight."
+
+"But how about our investigation in London?" asked Phelps, ruefully.
+
+"We can do that to-morrow. I think that just at present I can be of more
+immediate use here."
+
+"You might tell them at Briarbrae that I hope to be back to-morrow
+night," cried Phelps, as we began to move from the platform.
+
+"I hardly expect to go back to Briarbrae," answered Holmes, and waved
+his hand to us cheerily as we shot out from the station.
+
+Phelps and I talked it over on our journey, but neither of us could
+devise a satisfactory reason for this new development.
+
+"I suppose he wants to find out some clue as to the burglary last night,
+if a burglar it was. For myself, I don't believe it was an ordinary
+thief."
+
+"What is your own idea, then?"
+
+"Upon my word, you may put it down to my weak nerves or not, but I
+believe there is some deep political intrigue going on around me, and
+that for some reason that passes my understanding my life is aimed at
+by the conspirators. It sounds high-flown and absurd, but consider the
+facts! Why should a thief try to break in at a bedroom window, where
+there could be no hope of any plunder, and why should he come with a
+long knife in his hand?"
+
+"You are sure it was not a house-breaker's jimmy?"
+
+"Oh, no, it was a knife. I saw the flash of the blade quite distinctly."
+
+"But why on earth should you be pursued with such animosity?"
+
+"Ah, that is the question."
+
+"Well, if Holmes takes the same view, that would account for his action,
+would it not? Presuming that your theory is correct, if he can lay his
+hands upon the man who threatened you last night he will have gone a
+long way towards finding who took the naval treaty. It is absurd to
+suppose that you have two enemies, one of whom robs you, while the other
+threatens your life."
+
+"But Holmes said that he was not going to Briarbrae."
+
+"I have known him for some time," said I, "but I never knew him do
+anything yet without a very good reason," and with that our conversation
+drifted off on to other topics.
+
+But it was a weary day for me. Phelps was still weak after his long
+illness, and his misfortune made him querulous and nervous. In vain
+I endeavored to interest him in Afghanistan, in India, in social
+questions, in anything which might take his mind out of the groove.
+He would always come back to his lost treaty, wondering, guessing,
+speculating, as to what Holmes was doing, what steps Lord Holdhurst was
+taking, what news we should have in the morning. As the evening wore on
+his excitement became quite painful.
+
+"You have implicit faith in Holmes?" he asked.
+
+"I have seen him do some remarkable things."
+
+"But he never brought light into anything quite so dark as this?"
+
+"Oh, yes; I have known him solve questions which presented fewer clues
+than yours."
+
+"But not where such large interests are at stake?"
+
+"I don't know that. To my certain knowledge he has acted on behalf of
+three of the reigning houses of Europe in very vital matters."
+
+"But you know him well, Watson. He is such an inscrutable fellow that I
+never quite know what to make of him. Do you think he is hopeful? Do you
+think he expects to make a success of it?"
+
+"He has said nothing."
+
+"That is a bad sign."
+
+"On the contrary, I have noticed that when he is off the trail he
+generally says so. It is when he is on a scent and is not quite
+absolutely sure yet that it is the right one that he is most taciturn.
+Now, my dear fellow, we can't help matters by making ourselves nervous
+about them, so let me implore you to go to bed and so be fresh for
+whatever may await us to-morrow."
+
+I was able at last to persuade my companion to take my advice, though I
+knew from his excited manner that there was not much hope of sleep for
+him. Indeed, his mood was infectious, for I lay tossing half the night
+myself, brooding over this strange problem, and inventing a hundred
+theories, each of which was more impossible than the last. Why had
+Holmes remained at Woking? Why had he asked Miss Harrison to remain
+in the sick-room all day? Why had he been so careful not to inform the
+people at Briarbrae that he intended to remain near them? I cudgelled
+my brains until I fell asleep in the endeavor to find some explanation
+which would cover all these facts.
+
+It was seven o'clock when I awoke, and I set off at once for Phelps's
+room, to find him haggard and spent after a sleepless night. His first
+question was whether Holmes had arrived yet.
+
+"He'll be here when he promised," said I, "and not an instant sooner or
+later."
+
+And my words were true, for shortly after eight a hansom dashed up to
+the door and our friend got out of it. Standing in the window we saw
+that his left hand was swathed in a bandage and that his face was very
+grim and pale. He entered the house, but it was some little time before
+he came upstairs.
+
+"He looks like a beaten man," cried Phelps.
+
+I was forced to confess that he was right. "After all," said I, "the
+clue of the matter lies probably here in town."
+
+Phelps gave a groan.
+
+"I don't know how it is," said he, "but I had hoped for so much from his
+return. But surely his hand was not tied up like that yesterday. What
+can be the matter?"
+
+"You are not wounded, Holmes?" I asked, as my friend entered the room.
+
+"Tut, it is only a scratch through my own clumsiness," he answered,
+nodding his good-mornings to us. "This case of yours, Mr. Phelps, is
+certainly one of the darkest which I have ever investigated."
+
+"I feared that you would find it beyond you."
+
+"It has been a most remarkable experience."
+
+"That bandage tells of adventures," said I. "Won't you tell us what has
+happened?"
+
+"After breakfast, my dear Watson. Remember that I have breathed thirty
+miles of Surrey air this morning. I suppose that there has been no
+answer from my cabman advertisement? Well, well, we cannot expect to
+score every time."
+
+The table was all laid, and just as I was about to ring Mrs. Hudson
+entered with the tea and coffee. A few minutes later she brought in
+three covers, and we all drew up to the table, Holmes ravenous, I
+curious, and Phelps in the gloomiest state of depression.
+
+"Mrs. Hudson has risen to the occasion," said Holmes, uncovering a dish
+of curried chicken. "Her cuisine is a little limited, but she has
+as good an idea of breakfast as a Scotch-woman. What have you here,
+Watson?"
+
+"Ham and eggs," I answered.
+
+"Good! What are you going to take, Mr. Phelps--curried fowl or eggs, or
+will you help yourself?"
+
+"Thank you. I can eat nothing," said Phelps.
+
+"Oh, come! Try the dish before you."
+
+"Thank you, I would really rather not."
+
+"Well, then," said Holmes, with a mischievous twinkle, "I suppose that
+you have no objection to helping me?"
+
+Phelps raised the cover, and as he did so he uttered a scream, and sat
+there staring with a face as white as the plate upon which he looked.
+Across the centre of it was lying a little cylinder of blue-gray paper.
+He caught it up, devoured it with his eyes, and then danced madly about
+the room, pressing it to his bosom and shrieking out in his delight.
+Then he fell back into an arm-chair so limp and exhausted with his own
+emotions that we had to pour brandy down his throat to keep him from
+fainting.
+
+"There! there!" said Holmes, soothing, patting him upon the shoulder.
+"It was too bad to spring it on you like this, but Watson here will tell
+you that I never can resist a touch of the dramatic."
+
+Phelps seized his hand and kissed it. "God bless you!" he cried. "You
+have saved my honor."
+
+"Well, my own was at stake, you know," said Holmes. "I assure you it is
+just as hateful to me to fail in a case as it can be to you to blunder
+over a commission."
+
+Phelps thrust away the precious document into the innermost pocket of
+his coat.
+
+"I have not the heart to interrupt your breakfast any further, and yet I
+am dying to know how you got it and where it was."
+
+Sherlock Holmes swallowed a cup of coffee, and turned his attention to
+the ham and eggs. Then he rose, lit his pipe, and settled himself down
+into his chair.
+
+"I'll tell you what I did first, and how I came to do it afterwards,"
+said he. "After leaving you at the station I went for a charming walk
+through some admirable Surrey scenery to a pretty little village called
+Ripley, where I had my tea at an inn, and took the precaution of filling
+my flask and of putting a paper of sandwiches in my pocket. There I
+remained until evening, when I set off for Woking again, and found
+myself in the high-road outside Briarbrae just after sunset.
+
+"Well, I waited until the road was clear--it is never a very frequented
+one at any time, I fancy--and then I clambered over the fence into the
+grounds."
+
+"Surely the gate was open!" ejaculated Phelps.
+
+"Yes, but I have a peculiar taste in these matters. I chose the place
+where the three fir-trees stand, and behind their screen I got over
+without the least chance of any one in the house being able to see me.
+I crouched down among the bushes on the other side, and crawled from one
+to the other--witness the disreputable state of my trouser knees--until
+I had reached the clump of rhododendrons just opposite to your bedroom
+window. There I squatted down and awaited developments.
+
+"The blind was not down in your room, and I could see Miss Harrison
+sitting there reading by the table. It was quarter-past ten when she
+closed her book, fastened the shutters, and retired.
+
+"I heard her shut the door, and felt quite sure that she had turned the
+key in the lock."
+
+"The key!" ejaculated Phelps.
+
+"Yes; I had given Miss Harrison instructions to lock the door on the
+outside and take the key with her when she went to bed. She carried out
+every one of my injunctions to the letter, and certainly without her
+cooperation you would not have that paper in you coat-pocket. She
+departed then and the lights went out, and I was left squatting in the
+rhododendron-bush.
+
+"The night was fine, but still it was a very weary vigil. Of course it
+has the sort of excitement about it that the sportsman feels when he
+lies beside the water-course and waits for the big game. It was very
+long, though--almost as long, Watson, as when you and I waited in that
+deadly room when we looked into the little problem of the Speckled Band.
+There was a church-clock down at Woking which struck the quarters, and I
+thought more than once that it had stopped. At last however about two
+in the morning, I suddenly heard the gentle sound of a bolt being pushed
+back and the creaking of a key. A moment later the servants' door was
+opened, and Mr. Joseph Harrison stepped out into the moonlight."
+
+"Joseph!" ejaculated Phelps.
+
+"He was bare-headed, but he had a black coat thrown over his shoulder so
+that he could conceal his face in an instant if there were any alarm. He
+walked on tiptoe under the shadow of the wall, and when he reached the
+window he worked a long-bladed knife through the sash and pushed back
+the catch. Then he flung open the window, and putting his knife through
+the crack in the shutters, he thrust the bar up and swung them open.
+
+"From where I lay I had a perfect view of the inside of the room and of
+every one of his movements. He lit the two candles which stood upon the
+mantelpiece, and then he proceeded to turn back the corner of the carpet
+in the neighborhood of the door. Presently he stopped and picked out a
+square piece of board, such as is usually left to enable plumbers to get
+at the joints of the gas-pipes. This one covered, as a matter of
+fact, the T joint which gives off the pipe which supplies the kitchen
+underneath. Out of this hiding-place he drew that little cylinder
+of paper, pushed down the board, rearranged the carpet, blew out the
+candles, and walked straight into my arms as I stood waiting for him
+outside the window.
+
+"Well, he has rather more viciousness than I gave him credit for, has
+Master Joseph. He flew at me with his knife, and I had to grasp him
+twice, and got a cut over the knuckles, before I had the upper hand of
+him. He looked murder out of the only eye he could see with when we had
+finished, but he listened to reason and gave up the papers. Having
+got them I let my man go, but I wired full particulars to Forbes this
+morning. If he is quick enough to catch his bird, well and good. But
+if, as I shrewdly suspect, he finds the nest empty before he gets there,
+why, all the better for the government. I fancy that Lord Holdhurst for
+one, and Mr. Percy Phelps for another, would very much rather that the
+affair never got as far as a police-court.
+
+"My God!" gasped our client. "Do you tell me that during these long ten
+weeks of agony the stolen papers were within the very room with me all
+the time?"
+
+"So it was."
+
+"And Joseph! Joseph a villain and a thief!"
+
+"Hum! I am afraid Joseph's character is a rather deeper and more
+dangerous one than one might judge from his appearance. From what I
+have heard from him this morning, I gather that he has lost heavily in
+dabbling with stocks, and that he is ready to do anything on earth to
+better his fortunes. Being an absolutely selfish man, when a chance
+presented itself he did not allow either his sister's happiness or your
+reputation to hold his hand."
+
+Percy Phelps sank back in his chair. "My head whirls," said he. "Your
+words have dazed me."
+
+"The principal difficulty in your case," remarked Holmes, in his
+didactic fashion, "lay in the fact of there being too much evidence.
+What was vital was overlaid and hidden by what was irrelevant. Of all
+the facts which were presented to us we had to pick just those which we
+deemed to be essential, and then piece them together in their order, so
+as to reconstruct this very remarkable chain of events. I had already
+begun to suspect Joseph, from the fact that you had intended to travel
+home with him that night, and that therefore it was a likely enough
+thing that he should call for you, knowing the Foreign Office well, upon
+his way. When I heard that some one had been so anxious to get into the
+bedroom, in which no one but Joseph could have concealed anything--you
+told us in your narrative how you had turned Joseph out when you arrived
+with the doctor--my suspicions all changed to certainties, especially as
+the attempt was made on the first night upon which the nurse was absent,
+showing that the intruder was well acquainted with the ways of the
+house."
+
+"How blind I have been!"
+
+"The facts of the case, as far as I have worked them out, are these:
+this Joseph Harrison entered the office through the Charles Street door,
+and knowing his way he walked straight into your room the instant after
+you left it. Finding no one there he promptly rang the bell, and at
+the instant that he did so his eyes caught the paper upon the table.
+A glance showed him that chance had put in his way a State document of
+immense value, and in an instant he had thrust it into his pocket and
+was gone. A few minutes elapsed, as you remember, before the sleepy
+commissionnaire drew your attention to the bell, and those were just
+enough to give the thief time to make his escape.
+
+"He made his way to Woking by the first train, and having examined his
+booty and assured himself that it really was of immense value, he
+had concealed it in what he thought was a very safe place, with the
+intention of taking it out again in a day or two, and carrying it to the
+French embassy, or wherever he thought that a long price was to be
+had. Then came your sudden return. He, without a moment's warning, was
+bundled out of his room, and from that time onward there were always at
+least two of you there to prevent him from regaining his treasure. The
+situation to him must have been a maddening one. But at last he thought
+he saw his chance. He tried to steal in, but was baffled by your
+wakefulness. You remember that you did not take your usual draught that
+night."
+
+"I remember."
+
+"I fancy that he had taken steps to make that draught efficacious,
+and that he quite relied upon your being unconscious. Of course, I
+understood that he would repeat the attempt whenever it could be done
+with safety. Your leaving the room gave him the chance he wanted. I kept
+Miss Harrison in it all day so that he might not anticipate us. Then,
+having given him the idea that the coast was clear, I kept guard as
+I have described. I already knew that the papers were probably in the
+room, but I had no desire to rip up all the planking and skirting in
+search of them. I let him take them, therefore, from the hiding-place,
+and so saved myself an infinity of trouble. Is there any other point
+which I can make clear?"
+
+"Why did he try the window on the first occasion," I asked, "when he
+might have entered by the door?"
+
+"In reaching the door he would have to pass seven bedrooms. On the other
+hand, he could get out on to the lawn with ease. Anything else?"
+
+"You do not think," asked Phelps, "that he had any murderous intention?
+The knife was only meant as a tool."
+
+"It may be so," answered Holmes, shrugging his shoulders. "I can only
+say for certain that Mr. Joseph Harrison is a gentleman to whose mercy I
+should be extremely unwilling to trust."
+
+
+
+
+Adventure XI. The Final Problem
+
+
+It is with a heavy heart that I take up my pen to write these the last
+words in which I shall ever record the singular gifts by which my friend
+Mr. Sherlock Holmes was distinguished. In an incoherent and, as I deeply
+feel, an entirely inadequate fashion, I have endeavored to give some
+account of my strange experiences in his company from the chance which
+first brought us together at the period of the "Study in Scarlet," up
+to the time of his interference in the matter of the "Naval Treaty"--an
+interference which had the unquestionable effect of preventing a serious
+international complication. It was my intention to have stopped there,
+and to have said nothing of that event which has created a void in my
+life which the lapse of two years has done little to fill. My hand
+has been forced, however, by the recent letters in which Colonel James
+Moriarty defends the memory of his brother, and I have no choice but to
+lay the facts before the public exactly as they occurred. I alone know
+the absolute truth of the matter, and I am satisfied that the time has
+come when no good purpose is to be served by its suppression. As far as
+I know, there have been only three accounts in the public press: that
+in the Journal de Geneve on May 6th, 1891, the Reuter's despatch in the
+English papers on May 7th, and finally the recent letter to which I have
+alluded. Of these the first and second were extremely condensed, while
+the last is, as I shall now show, an absolute perversion of the facts.
+It lies with me to tell for the first time what really took place
+between Professor Moriarty and Mr. Sherlock Holmes.
+
+It may be remembered that after my marriage, and my subsequent start in
+private practice, the very intimate relations which had existed between
+Holmes and myself became to some extent modified. He still came to me
+from time to time when he desired a companion in his investigation, but
+these occasions grew more and more seldom, until I find that in the year
+1890 there were only three cases of which I retain any record. During
+the winter of that year and the early spring of 1891, I saw in the
+papers that he had been engaged by the French government upon a matter
+of supreme importance, and I received two notes from Holmes, dated from
+Narbonne and from Nimes, from which I gathered that his stay in France
+was likely to be a long one. It was with some surprise, therefore, that
+I saw him walk into my consulting-room upon the evening of April 24th.
+It struck me that he was looking even paler and thinner than usual.
+
+"Yes, I have been using myself up rather too freely," he remarked, in
+answer to my look rather than to my words; "I have been a little pressed
+of late. Have you any objection to my closing your shutters?"
+
+The only light in the room came from the lamp upon the table at which I
+had been reading. Holmes edged his way round the wall and flinging the
+shutters together, he bolted them securely.
+
+"You are afraid of something?" I asked.
+
+"Well, I am."
+
+"Of what?"
+
+"Of air-guns."
+
+"My dear Holmes, what do you mean?"
+
+"I think that you know me well enough, Watson, to understand that I am
+by no means a nervous man. At the same time, it is stupidity rather than
+courage to refuse to recognize danger when it is close upon you. Might
+I trouble you for a match?" He drew in the smoke of his cigarette as if
+the soothing influence was grateful to him.
+
+"I must apologize for calling so late," said he, "and I must further beg
+you to be so unconventional as to allow me to leave your house presently
+by scrambling over your back garden wall."
+
+"But what does it all mean?" I asked.
+
+He held out his hand, and I saw in the light of the lamp that two of his
+knuckles were burst and bleeding.
+
+"It is not an airy nothing, you see," said he, smiling. "On the
+contrary, it is solid enough for a man to break his hand over. Is Mrs.
+Watson in?"
+
+"She is away upon a visit."
+
+"Indeed! You are alone?"
+
+"Quite."
+
+"Then it makes it the easier for me to propose that you should come away
+with me for a week to the Continent."
+
+"Where?"
+
+"Oh, anywhere. It's all the same to me."
+
+There was something very strange in all this. It was not Holmes's nature
+to take an aimless holiday, and something about his pale, worn face told
+me that his nerves were at their highest tension. He saw the question in
+my eyes, and, putting his finger-tips together and his elbows upon his
+knees, he explained the situation.
+
+"You have probably never heard of Professor Moriarty?" said he.
+
+"Never."
+
+"Aye, there's the genius and the wonder of the thing!" he cried. "The
+man pervades London, and no one has heard of him. That's what puts
+him on a pinnacle in the records of crime. I tell you, Watson, in all
+seriousness, that if I could beat that man, if I could free society
+of him, I should feel that my own career had reached its summit, and
+I should be prepared to turn to some more placid line in life. Between
+ourselves, the recent cases in which I have been of assistance to the
+royal family of Scandinavia, and to the French republic, have left me in
+such a position that I could continue to live in the quiet fashion
+which is most congenial to me, and to concentrate my attention upon my
+chemical researches. But I could not rest, Watson, I could not sit quiet
+in my chair, if I thought that such a man as Professor Moriarty were
+walking the streets of London unchallenged."
+
+"What has he done, then?"
+
+"His career has been an extraordinary one. He is a man of good birth and
+excellent education, endowed by nature with a phenomenal mathematical
+faculty. At the age of twenty-one he wrote a treatise upon the Binomial
+Theorem, which has had a European vogue. On the strength of it he won
+the Mathematical Chair at one of our smaller universities, and had, to
+all appearances, a most brilliant career before him. But the man had
+hereditary tendencies of the most diabolical kind. A criminal strain
+ran in his blood, which, instead of being modified, was increased and
+rendered infinitely more dangerous by his extraordinary mental powers.
+Dark rumors gathered round him in the university town, and eventually he
+was compelled to resign his chair and to come down to London, where he
+set up as an army coach. So much is known to the world, but what I am
+telling you now is what I have myself discovered.
+
+"As you are aware, Watson, there is no one who knows the higher criminal
+world of London so well as I do. For years past I have continually been
+conscious of some power behind the malefactor, some deep organizing
+power which forever stands in the way of the law, and throws its shield
+over the wrong-doer. Again and again in cases of the most varying
+sorts--forgery cases, robberies, murders--I have felt the presence of
+this force, and I have deduced its action in many of those undiscovered
+crimes in which I have not been personally consulted. For years I have
+endeavored to break through the veil which shrouded it, and at last
+the time came when I seized my thread and followed it, until it led
+me, after a thousand cunning windings, to ex-Professor Moriarty of
+mathematical celebrity.
+
+"He is the Napoleon of crime, Watson. He is the organizer of half that
+is evil and of nearly all that is undetected in this great city. He is a
+genius, a philosopher, an abstract thinker. He has a brain of the first
+order. He sits motionless, like a spider in the center of its web, but
+that web has a thousand radiations, and he knows well every quiver of
+each of them. He does little himself. He only plans. But his agents are
+numerous and splendidly organized. Is there a crime to be done, a
+paper to be abstracted, we will say, a house to be rifled, a man to be
+removed--the word is passed to the Professor, the matter is organized
+and carried out. The agent may be caught. In that case money is found
+for his bail or his defence. But the central power which uses the agent
+is never caught--never so much as suspected. This was the organization
+which I deduced, Watson, and which I devoted my whole energy to exposing
+and breaking up.
+
+"But the Professor was fenced round with safeguards so cunningly devised
+that, do what I would, it seemed impossible to get evidence which would
+convict in a court of law. You know my powers, my dear Watson, and yet
+at the end of three months I was forced to confess that I had at last
+met an antagonist who was my intellectual equal. My horror at his crimes
+was lost in my admiration at his skill. But at last he made a trip--only
+a little, little trip--but it was more than he could afford when I was
+so close upon him. I had my chance, and, starting from that point, I
+have woven my net round him until now it is all ready to close. In three
+days--that is to say, on Monday next--matters will be ripe, and the
+Professor, with all the principal members of his gang, will be in the
+hands of the police. Then will come the greatest criminal trial of the
+century, the clearing up of over forty mysteries, and the rope for all
+of them; but if we move at all prematurely, you understand, they may
+slip out of our hands even at the last moment.
+
+"Now, if I could have done this without the knowledge of Professor
+Moriarty, all would have been well. But he was too wily for that. He saw
+every step which I took to draw my toils round him. Again and again
+he strove to break away, but I as often headed him off. I tell you,
+my friend, that if a detailed account of that silent contest could
+be written, it would take its place as the most brilliant bit of
+thrust-and-parry work in the history of detection. Never have I risen to
+such a height, and never have I been so hard pressed by an opponent. He
+cut deep, and yet I just undercut him. This morning the last steps were
+taken, and three days only were wanted to complete the business. I was
+sitting in my room thinking the matter over, when the door opened and
+Professor Moriarty stood before me.
+
+"My nerves are fairly proof, Watson, but I must confess to a start when
+I saw the very man who had been so much in my thoughts standing there on
+my threshhold. His appearance was quite familiar to me. He is extremely
+tall and thin, his forehead domes out in a white curve, and his two
+eyes are deeply sunken in his head. He is clean-shaven, pale, and
+ascetic-looking, retaining something of the professor in his features.
+His shoulders are rounded from much study, and his face protrudes
+forward, and is forever slowly oscillating from side to side in a
+curiously reptilian fashion. He peered at me with great curiosity in his
+puckered eyes.
+
+"'You have less frontal development than I should have expected,' said
+he, at last. 'It is a dangerous habit to finger loaded firearms in the
+pocket of one's dressing-gown.'
+
+"The fact is that upon his entrance I had instantly recognized the
+extreme personal danger in which I lay. The only conceivable escape for
+him lay in silencing my tongue. In an instant I had slipped the revolver
+from the drawer into my pocket, and was covering him through the cloth.
+At his remark I drew the weapon out and laid it cocked upon the table.
+He still smiled and blinked, but there was something about his eyes
+which made me feel very glad that I had it there.
+
+"'You evidently don't know me,' said he.
+
+"'On the contrary,' I answered, 'I think it is fairly evident that I do.
+Pray take a chair. I can spare you five minutes if you have anything to
+say.'
+
+"'All that I have to say has already crossed your mind,' said he.
+
+"'Then possibly my answer has crossed yours,' I replied.
+
+"'You stand fast?'
+
+"'Absolutely.'
+
+"He clapped his hand into his pocket, and I raised the pistol from
+the table. But he merely drew out a memorandum-book in which he had
+scribbled some dates.
+
+"'You crossed my path on the 4th of January,' said he. 'On the 23d you
+incommoded me; by the middle of February I was seriously inconvenienced
+by you; at the end of March I was absolutely hampered in my plans; and
+now, at the close of April, I find myself placed in such a position
+through your continual persecution that I am in positive danger of
+losing my liberty. The situation is becoming an impossible one.'
+
+"'Have you any suggestion to make?' I asked.
+
+"'You must drop it, Mr. Holmes,' said he, swaying his face about. 'You
+really must, you know.'
+
+"'After Monday,' said I.
+
+"'Tut, tut,' said he. 'I am quite sure that a man of your intelligence
+will see that there can be but one outcome to this affair. It is
+necessary that you should withdraw. You have worked things in such a
+fashion that we have only one resource left. It has been an intellectual
+treat to me to see the way in which you have grappled with this affair,
+and I say, unaffectedly, that it would be a grief to me to be forced
+to take any extreme measure. You smile, sir, but I assure you that it
+really would.'
+
+"'Danger is part of my trade,' I remarked.
+
+"'That is not danger,' said he. 'It is inevitable destruction. You stand
+in the way not merely of an individual, but of a mighty organization,
+the full extent of which you, with all your cleverness, have been unable
+to realize. You must stand clear, Mr. Holmes, or be trodden under foot.'
+
+"'I am afraid,' said I, rising, 'that in the pleasure of this
+conversation I am neglecting business of importance which awaits me
+elsewhere.'
+
+"He rose also and looked at me in silence, shaking his head sadly.
+
+"'Well, well,' said he, at last. 'It seems a pity, but I have done
+what I could. I know every move of your game. You can do nothing before
+Monday. It has been a duel between you and me, Mr. Holmes. You hope to
+place me in the dock. I tell you that I will never stand in the dock.
+You hope to beat me. I tell you that you will never beat me. If you are
+clever enough to bring destruction upon me, rest assured that I shall do
+as much to you.'
+
+"'You have paid me several compliments, Mr. Moriarty,' said I. 'Let me
+pay you one in return when I say that if I were assured of the former
+eventuality I would, in the interests of the public, cheerfully accept
+the latter.'
+
+"'I can promise you the one, but not the other,' he snarled, and so
+turned his rounded back upon me, and went peering and blinking out of
+the room.
+
+"That was my singular interview with Professor Moriarty. I confess that
+it left an unpleasant effect upon my mind. His soft, precise fashion
+of speech leaves a conviction of sincerity which a mere bully could
+not produce. Of course, you will say: 'Why not take police precautions
+against him?' the reason is that I am well convinced that it is from his
+agents the blow will fall. I have the best proofs that it would be so."
+
+"You have already been assaulted?"
+
+"My dear Watson, Professor Moriarty is not a man who lets the grass grow
+under his feet. I went out about mid-day to transact some business in
+Oxford Street. As I passed the corner which leads from Bentinck Street
+on to the Welbeck Street crossing a two-horse van furiously driven
+whizzed round and was on me like a flash. I sprang for the foot-path
+and saved myself by the fraction of a second. The van dashed round by
+Marylebone Lane and was gone in an instant. I kept to the pavement after
+that, Watson, but as I walked down Vere Street a brick came down from
+the roof of one of the houses, and was shattered to fragments at my
+feet. I called the police and had the place examined. There were slates
+and bricks piled up on the roof preparatory to some repairs, and they
+would have me believe that the wind had toppled over one of these. Of
+course I knew better, but I could prove nothing. I took a cab after that
+and reached my brother's rooms in Pall Mall, where I spent the day. Now
+I have come round to you, and on my way I was attacked by a rough with a
+bludgeon. I knocked him down, and the police have him in custody; but
+I can tell you with the most absolute confidence that no possible
+connection will ever be traced between the gentleman upon whose front
+teeth I have barked my knuckles and the retiring mathematical coach, who
+is, I dare say, working out problems upon a black-board ten miles away.
+You will not wonder, Watson, that my first act on entering your rooms
+was to close your shutters, and that I have been compelled to ask your
+permission to leave the house by some less conspicuous exit than the
+front door."
+
+I had often admired my friend's courage, but never more than now, as he
+sat quietly checking off a series of incidents which must have combined
+to make up a day of horror.
+
+"You will spend the night here?" I said.
+
+"No, my friend, you might find me a dangerous guest. I have my plans
+laid, and all will be well. Matters have gone so far now that they can
+move without my help as far as the arrest goes, though my presence is
+necessary for a conviction. It is obvious, therefore, that I cannot do
+better than get away for the few days which remain before the police are
+at liberty to act. It would be a great pleasure to me, therefore, if you
+could come on to the Continent with me."
+
+"The practice is quiet," said I, "and I have an accommodating neighbor.
+I should be glad to come."
+
+"And to start to-morrow morning?"
+
+"If necessary."
+
+"Oh yes, it is most necessary. Then these are your instructions, and I
+beg, my dear Watson, that you will obey them to the letter, for you are
+now playing a double-handed game with me against the cleverest rogue and
+the most powerful syndicate of criminals in Europe. Now listen! You
+will dispatch whatever luggage you intend to take by a trusty messenger
+unaddressed to Victoria to-night. In the morning you will send for a
+hansom, desiring your man to take neither the first nor the second which
+may present itself. Into this hansom you will jump, and you will drive
+to the Strand end of the Lowther Arcade, handing the address to the
+cabman upon a slip of paper, with a request that he will not throw it
+away. Have your fare ready, and the instant that your cab stops,
+dash through the Arcade, timing yourself to reach the other side at a
+quarter-past nine. You will find a small brougham waiting close to the
+curb, driven by a fellow with a heavy black cloak tipped at the collar
+with red. Into this you will step, and you will reach Victoria in time
+for the Continental express."
+
+"Where shall I meet you?"
+
+"At the station. The second first-class carriage from the front will be
+reserved for us."
+
+"The carriage is our rendezvous, then?"
+
+"Yes."
+
+It was in vain that I asked Holmes to remain for the evening. It was
+evident to me that he thought he might bring trouble to the roof he was
+under, and that that was the motive which impelled him to go. With a few
+hurried words as to our plans for the morrow he rose and came out with
+me into the garden, clambering over the wall which leads into Mortimer
+Street, and immediately whistling for a hansom, in which I heard him
+drive away.
+
+In the morning I obeyed Holmes's injunctions to the letter. A hansom was
+procured with such precaution as would prevent its being one which was
+placed ready for us, and I drove immediately after breakfast to the
+Lowther Arcade, through which I hurried at the top of my speed. A
+brougham was waiting with a very massive driver wrapped in a dark cloak,
+who, the instant that I had stepped in, whipped up the horse and rattled
+off to Victoria Station. On my alighting there he turned the carriage,
+and dashed away again without so much as a look in my direction.
+
+So far all had gone admirably. My luggage was waiting for me, and I had
+no difficulty in finding the carriage which Holmes had indicated, the
+less so as it was the only one in the train which was marked "Engaged."
+My only source of anxiety now was the non-appearance of Holmes. The
+station clock marked only seven minutes from the time when we were
+due to start. In vain I searched among the groups of travellers and
+leave-takers for the lithe figure of my friend. There was no sign of
+him. I spent a few minutes in assisting a venerable Italian priest, who
+was endeavoring to make a porter understand, in his broken English,
+that his luggage was to be booked through to Paris. Then, having taken
+another look round, I returned to my carriage, where I found that the
+porter, in spite of the ticket, had given me my decrepit Italian friend
+as a traveling companion. It was useless for me to explain to him that
+his presence was an intrusion, for my Italian was even more limited than
+his English, so I shrugged my shoulders resignedly, and continued to
+look out anxiously for my friend. A chill of fear had come over me, as I
+thought that his absence might mean that some blow had fallen during the
+night. Already the doors had all been shut and the whistle blown, when--
+
+"My dear Watson," said a voice, "you have not even condescended to say
+good-morning."
+
+I turned in uncontrollable astonishment. The aged ecclesiastic had
+turned his face towards me. For an instant the wrinkles were smoothed
+away, the nose drew away from the chin, the lower lip ceased to protrude
+and the mouth to mumble, the dull eyes regained their fire, the drooping
+figure expanded. The next the whole frame collapsed again, and Holmes
+had gone as quickly as he had come.
+
+"Good heavens!" I cried; "how you startled me!"
+
+"Every precaution is still necessary," he whispered. "I have reason to
+think that they are hot upon our trail. Ah, there is Moriarty himself."
+
+The train had already begun to move as Holmes spoke. Glancing back, I
+saw a tall man pushing his way furiously through the crowd, and waving
+his hand as if he desired to have the train stopped. It was too late,
+however, for we were rapidly gathering momentum, and an instant later
+had shot clear of the station.
+
+"With all our precautions, you see that we have cut it rather fine,"
+said Holmes, laughing. He rose, and throwing off the black cassock and
+hat which had formed his disguise, he packed them away in a hand-bag.
+
+"Have you seen the morning paper, Watson?"
+
+"No."
+
+"You haven't' seen about Baker Street, then?"
+
+"Baker Street?"
+
+"They set fire to our rooms last night. No great harm was done."
+
+"Good heavens, Holmes! this is intolerable."
+
+"They must have lost my track completely after their bludgeon-man was
+arrested. Otherwise they could not have imagined that I had returned
+to my rooms. They have evidently taken the precaution of watching you,
+however, and that is what has brought Moriarty to Victoria. You could
+not have made any slip in coming?"
+
+"I did exactly what you advised."
+
+"Did you find your brougham?"
+
+"Yes, it was waiting."
+
+"Did you recognize your coachman?"
+
+"No."
+
+"It was my brother Mycroft. It is an advantage to get about in such a
+case without taking a mercenary into your confidence. But we must plan
+what we are to do about Moriarty now."
+
+"As this is an express, and as the boat runs in connection with it, I
+should think we have shaken him off very effectively."
+
+"My dear Watson, you evidently did not realize my meaning when I said
+that this man may be taken as being quite on the same intellectual plane
+as myself. You do not imagine that if I were the pursuer I should allow
+myself to be baffled by so slight an obstacle. Why, then, should you
+think so meanly of him?"
+
+"What will he do?"
+
+"What I should do?"
+
+"What would you do, then?"
+
+"Engage a special."
+
+"But it must be late."
+
+"By no means. This train stops at Canterbury; and there is always at
+least a quarter of an hour's delay at the boat. He will catch us there."
+
+"One would think that we were the criminals. Let us have him arrested on
+his arrival."
+
+"It would be to ruin the work of three months. We should get the big
+fish, but the smaller would dart right and left out of the net. On
+Monday we should have them all. No, an arrest is inadmissible."
+
+"What then?"
+
+"We shall get out at Canterbury."
+
+"And then?"
+
+"Well, then we must make a cross-country journey to Newhaven, and so
+over to Dieppe. Moriarty will again do what I should do. He will get on
+to Paris, mark down our luggage, and wait for two days at the depot.
+In the meantime we shall treat ourselves to a couple of carpet-bags,
+encourage the manufactures of the countries through which we travel, and
+make our way at our leisure into Switzerland, via Luxembourg and Basle."
+
+At Canterbury, therefore, we alighted, only to find that we should have
+to wait an hour before we could get a train to Newhaven.
+
+I was still looking rather ruefully after the rapidly disappearing
+luggage-van which contained my wardrobe, when Holmes pulled my sleeve
+and pointed up the line.
+
+"Already, you see," said he.
+
+Far away, from among the Kentish woods there rose a thin spray of smoke.
+A minute later a carriage and engine could be seen flying along the open
+curve which leads to the station. We had hardly time to take our place
+behind a pile of luggage when it passed with a rattle and a roar,
+beating a blast of hot air into our faces.
+
+"There he goes," said Holmes, as we watched the carriage swing and
+rock over the points. "There are limits, you see, to our friend's
+intelligence. It would have been a coup-de-maitre had he deduced what I
+would deduce and acted accordingly."
+
+"And what would he have done had he overtaken us?"
+
+"There cannot be the least doubt that he would have made a murderous
+attack upon me. It is, however, a game at which two may play. The
+question now is whether we should take a premature lunch here, or run
+our chance of starving before we reach the buffet at Newhaven."
+
+
+We made our way to Brussels that night and spent two days there, moving
+on upon the third day as far as Strasburg. On the Monday morning Holmes
+had telegraphed to the London police, and in the evening we found a
+reply waiting for us at our hotel. Holmes tore it open, and then with a
+bitter curse hurled it into the grate.
+
+"I might have known it!" he groaned. "He has escaped!"
+
+"Moriarty?"
+
+"They have secured the whole gang with the exception of him. He has
+given them the slip. Of course, when I had left the country there was no
+one to cope with him. But I did think that I had put the game in their
+hands. I think that you had better return to England, Watson."
+
+"Why?"
+
+"Because you will find me a dangerous companion now. This man's
+occupation is gone. He is lost if he returns to London. If I read his
+character right he will devote his whole energies to revenging himself
+upon me. He said as much in our short interview, and I fancy that he
+meant it. I should certainly recommend you to return to your practice."
+
+It was hardly an appeal to be successful with one who was an
+old campaigner as well as an old friend. We sat in the Strasburg
+salle-à-manger arguing the question for half an hour, but the same night
+we had resumed our journey and were well on our way to Geneva.
+
+For a charming week we wandered up the Valley of the Rhone, and then,
+branching off at Leuk, we made our way over the Gemmi Pass, still deep
+in snow, and so, by way of Interlaken, to Meiringen. It was a lovely
+trip, the dainty green of the spring below, the virgin white of the
+winter above; but it was clear to me that never for one instant did
+Holmes forget the shadow which lay across him. In the homely Alpine
+villages or in the lonely mountain passes, I could tell by his quick
+glancing eyes and his sharp scrutiny of every face that passed us,
+that he was well convinced that, walk where we would, we could not walk
+ourselves clear of the danger which was dogging our footsteps.
+
+Once, I remember, as we passed over the Gemmi, and walked along
+the border of the melancholy Daubensee, a large rock which had been
+dislodged from the ridge upon our right clattered down and roared into
+the lake behind us. In an instant Holmes had raced up on to the ridge,
+and, standing upon a lofty pinnacle, craned his neck in every direction.
+It was in vain that our guide assured him that a fall of stones was a
+common chance in the spring-time at that spot. He said nothing, but
+he smiled at me with the air of a man who sees the fulfillment of that
+which he had expected.
+
+And yet for all his watchfulness he was never depressed. On the
+contrary, I can never recollect having seen him in such exuberant
+spirits. Again and again he recurred to the fact that if he could
+be assured that society was freed from Professor Moriarty he would
+cheerfully bring his own career to a conclusion.
+
+"I think that I may go so far as to say, Watson, that I have not lived
+wholly in vain," he remarked. "If my record were closed to-night I could
+still survey it with equanimity. The air of London is the sweeter for my
+presence. In over a thousand cases I am not aware that I have ever used
+my powers upon the wrong side. Of late I have been tempted to look into
+the problems furnished by nature rather than those more superficial ones
+for which our artificial state of society is responsible. Your memoirs
+will draw to an end, Watson, upon the day that I crown my career by
+the capture or extinction of the most dangerous and capable criminal in
+Europe."
+
+I shall be brief, and yet exact, in the little which remains for me to
+tell. It is not a subject on which I would willingly dwell, and yet I am
+conscious that a duty devolves upon me to omit no detail.
+
+It was on the 3d of May that we reached the little village of Meiringen,
+where we put up at the Englischer Hof, then kept by Peter Steiler the
+elder. Our landlord was an intelligent man, and spoke excellent English,
+having served for three years as waiter at the Grosvenor Hotel in
+London. At his advice, on the afternoon of the 4th we set off together,
+with the intention of crossing the hills and spending the night at the
+hamlet of Rosenlaui. We had strict injunctions, however, on no account
+to pass the falls of Reichenbach, which are about half-way up the hill,
+without making a small detour to see them.
+
+It is indeed, a fearful place. The torrent, swollen by the melting snow,
+plunges into a tremendous abyss, from which the spray rolls up like the
+smoke from a burning house. The shaft into which the river hurls itself
+is an immense chasm, lined by glistening coal-black rock, and narrowing
+into a creaming, boiling pit of incalculable depth, which brims over and
+shoots the stream onward over its jagged lip. The long sweep of green
+water roaring forever down, and the thick flickering curtain of spray
+hissing forever upward, turn a man giddy with their constant whirl and
+clamor. We stood near the edge peering down at the gleam of the breaking
+water far below us against the black rocks, and listening to the
+half-human shout which came booming up with the spray out of the abyss.
+
+The path has been cut half-way round the fall to afford a complete view,
+but it ends abruptly, and the traveler has to return as he came. We had
+turned to do so, when we saw a Swiss lad come running along it with
+a letter in his hand. It bore the mark of the hotel which we had just
+left, and was addressed to me by the landlord. It appeared that within a
+very few minutes of our leaving, an English lady had arrived who was in
+the last stage of consumption. She had wintered at Davos Platz, and was
+journeying now to join her friends at Lucerne, when a sudden hemorrhage
+had overtaken her. It was thought that she could hardly live a few
+hours, but it would be a great consolation to her to see an English
+doctor, and, if I would only return, etc. The good Steiler assured me
+in a postscript that he would himself look upon my compliance as a very
+great favor, since the lady absolutely refused to see a Swiss physician,
+and he could not but feel that he was incurring a great responsibility.
+
+The appeal was one which could not be ignored. It was impossible to
+refuse the request of a fellow-countrywoman dying in a strange land. Yet
+I had my scruples about leaving Holmes. It was finally agreed, however,
+that he should retain the young Swiss messenger with him as guide and
+companion while I returned to Meiringen. My friend would stay some
+little time at the fall, he said, and would then walk slowly over the
+hill to Rosenlaui, where I was to rejoin him in the evening. As I turned
+away I saw Holmes, with his back against a rock and his arms folded,
+gazing down at the rush of the waters. It was the last that I was ever
+destined to see of him in this world.
+
+When I was near the bottom of the descent I looked back. It was
+impossible, from that position, to see the fall, but I could see the
+curving path which winds over the shoulder of the hill and leads to it.
+Along this a man was, I remember, walking very rapidly.
+
+I could see his black figure clearly outlined against the green behind
+him. I noted him, and the energy with which he walked but he passed from
+my mind again as I hurried on upon my errand.
+
+It may have been a little over an hour before I reached Meiringen. Old
+Steiler was standing at the porch of his hotel.
+
+"Well," said I, as I came hurrying up, "I trust that she is no worse?"
+
+A look of surprise passed over his face, and at the first quiver of his
+eyebrows my heart turned to lead in my breast.
+
+"You did not write this?" I said, pulling the letter from my pocket.
+"There is no sick Englishwoman in the hotel?"
+
+"Certainly not!" he cried. "But it has the hotel mark upon it! Ha, it
+must have been written by that tall Englishman who came in after you had
+gone. He said--"
+
+But I waited for none of the landlord's explanations. In a tingle of
+fear I was already running down the village street, and making for the
+path which I had so lately descended. It had taken me an hour to come
+down. For all my efforts two more had passed before I found myself at
+the fall of Reichenbach once more. There was Holmes's Alpine-stock still
+leaning against the rock by which I had left him. But there was no sign
+of him, and it was in vain that I shouted. My only answer was my own
+voice reverberating in a rolling echo from the cliffs around me.
+
+It was the sight of that Alpine-stock which turned me cold and sick.
+He had not gone to Rosenlaui, then. He had remained on that three-foot
+path, with sheer wall on one side and sheer drop on the other, until his
+enemy had overtaken him. The young Swiss had gone too. He had probably
+been in the pay of Moriarty, and had left the two men together. And then
+what had happened? Who was to tell us what had happened then?
+
+I stood for a minute or two to collect myself, for I was dazed with the
+horror of the thing. Then I began to think of Holmes's own methods and
+to try to practise them in reading this tragedy. It was, alas, only too
+easy to do. During our conversation we had not gone to the end of the
+path, and the Alpine-stock marked the place where we had stood. The
+blackish soil is kept forever soft by the incessant drift of spray,
+and a bird would leave its tread upon it. Two lines of footmarks were
+clearly marked along the farther end of the path, both leading away from
+me. There were none returning. A few yards from the end the soil was
+all ploughed up into a patch of mud, and the branches and ferns which
+fringed the chasm were torn and bedraggled. I lay upon my face and
+peered over with the spray spouting up all around me. It had darkened
+since I left, and now I could only see here and there the glistening of
+moisture upon the black walls, and far away down at the end of the shaft
+the gleam of the broken water. I shouted; but only the same half-human
+cry of the fall was borne back to my ears.
+
+But it was destined that I should after all have a last word of greeting
+from my friend and comrade. I have said that his Alpine-stock had been
+left leaning against a rock which jutted on to the path. From the top of
+this bowlder the gleam of something bright caught my eye, and, raising
+my hand, I found that it came from the silver cigarette-case which he
+used to carry. As I took it up a small square of paper upon which it
+had lain fluttered down on to the ground. Unfolding it, I found that it
+consisted of three pages torn from his note-book and addressed to me. It
+was characteristic of the man that the direction was a precise, and the
+writing as firm and clear, as though it had been written in his study.
+
+My dear Watson [it said], I write these few lines through the courtesy
+of Mr. Moriarty, who awaits my convenience for the final discussion of
+those questions which lie between us. He has been giving me a sketch
+of the methods by which he avoided the English police and kept himself
+informed of our movements. They certainly confirm the very high opinion
+which I had formed of his abilities. I am pleased to think that I shall
+be able to free society from any further effects of his presence, though
+I fear that it is at a cost which will give pain to my friends, and
+especially, my dear Watson, to you. I have already explained to you,
+however, that my career had in any case reached its crisis, and that
+no possible conclusion to it could be more congenial to me than this.
+Indeed, if I may make a full confession to you, I was quite convinced
+that the letter from Meiringen was a hoax, and I allowed you to depart
+on that errand under the persuasion that some development of this sort
+would follow. Tell Inspector Patterson that the papers which he needs
+to convict the gang are in pigeonhole M., done up in a blue envelope
+and inscribed "Moriarty." I made every disposition of my property before
+leaving England, and handed it to my brother Mycroft. Pray give my
+greetings to Mrs. Watson, and believe me to be, my dear fellow,
+
+Very sincerely yours,
+
+Sherlock Holmes
+
+
+A few words may suffice to tell the little that remains. An examination
+by experts leaves little doubt that a personal contest between the two
+men ended, as it could hardly fail to end in such a situation, in their
+reeling over, locked in each other's arms. Any attempt at recovering the
+bodies was absolutely hopeless, and there, deep down in that dreadful
+caldron of swirling water and seething foam, will lie for all time the
+most dangerous criminal and the foremost champion of the law of their
+generation. The Swiss youth was never found again, and there can be no
+doubt that he was one of the numerous agents whom Moriarty kept in this
+employ. As to the gang, it will be within the memory of the public
+how completely the evidence which Holmes had accumulated exposed their
+organization, and how heavily the hand of the dead man weighed
+upon them. Of their terrible chief few details came out during the
+proceedings, and if I have now been compelled to make a clear statement
+of his career it is due to those injudicious champions who have
+endeavored to clear his memory by attacks upon him whom I shall ever
+regard as the best and the wisest man whom I have ever known.
+
+
+
+
+
+End of the Project Gutenberg EBook of Memoirs of Sherlock Holmes, by 
+Sir Arthur Conan Doyle
+
+*** END OF THIS PROJECT GUTENBERG EBOOK MEMOIRS OF SHERLOCK HOLMES ***
+
+***** This file should be named 834-8.txt or 834-8.zip *****
+This and all associated files of various formats will be found in:
+        http://www.gutenberg.org/8/3/834/
+
+Produced by Angela M. Cable
+
+Updated editions will replace the previous one--the old editions
+will be renamed.
+
+Creating the works from public domain print editions means that no
+one owns a United States copyright in these works, so the Foundation
+(and you!) can copy and distribute it in the United States without
+permission and without paying copyright royalties.  Special rules,
+set forth in the General Terms of Use part of this license, apply to
+copying and distributing Project Gutenberg-tm electronic works to
+protect the PROJECT GUTENBERG-tm concept and trademark.  Project
+Gutenberg is a registered trademark, and may not be used if you
+charge for the eBooks, unless you receive specific permission.  If you
+do not charge anything for copies of this eBook, complying with the
+rules is very easy.  You may use this eBook for nearly any purpose
+such as creation of derivative works, reports, performances and
+research.  They may be modified and printed and given away--you may do
+practically ANYTHING with public domain eBooks.  Redistribution is
+subject to the trademark license, especially commercial
+redistribution.
+
+
+
+*** START: FULL LICENSE ***
+
+THE FULL PROJECT GUTENBERG LICENSE
+PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
+
+To protect the Project Gutenberg-tm mission of promoting the free
+distribution of electronic works, by using or distributing this work
+(or any other work associated in any way with the phrase "Project
+Gutenberg"), you agree to comply with all the terms of the Full Project
+Gutenberg-tm License (available with this file or online at
+http://gutenberg.org/license).
+
+
+Section 1.  General Terms of Use and Redistributing Project Gutenberg-tm
+electronic works
+
+1.A.  By reading or using any part of this Project Gutenberg-tm
+electronic work, you indicate that you have read, understand, agree to
+and accept all the terms of this license and intellectual property
+(trademark/copyright) agreement.  If you do not agree to abide by all
+the terms of this agreement, you must cease using and return or destroy
+all copies of Project Gutenberg-tm electronic works in your possession.
+If you paid a fee for obtaining a copy of or access to a Project
+Gutenberg-tm electronic work and you do not agree to be bound by the
+terms of this agreement, you may obtain a refund from the person or
+entity to whom you paid the fee as set forth in paragraph 1.E.8.
+
+1.B.  "Project Gutenberg" is a registered trademark.  It may only be
+used on or associated in any way with an electronic work by people who
+agree to be bound by the terms of this agreement.  There are a few
+things that you can do with most Project Gutenberg-tm electronic works
+even without complying with the full terms of this agreement.  See
+paragraph 1.C below.  There are a lot of things you can do with Project
+Gutenberg-tm electronic works if you follow the terms of this agreement
+and help preserve free future access to Project Gutenberg-tm electronic
+works.  See paragraph 1.E below.
+
+1.C.  The Project Gutenberg Literary Archive Foundation ("the Foundation"
+or PGLAF), owns a compilation copyright in the collection of Project
+Gutenberg-tm electronic works.  Nearly all the individual works in the
+collection are in the public domain in the United States.  If an
+individual work is in the public domain in the United States and you are
+located in the United States, we do not claim a right to prevent you from
+copying, distributing, performing, displaying or creating derivative
+works based on the work as long as all references to Project Gutenberg
+are removed.  Of course, we hope that you will support the Project
+Gutenberg-tm mission of promoting free access to electronic works by
+freely sharing Project Gutenberg-tm works in compliance with the terms of
+this agreement for keeping the Project Gutenberg-tm name associated with
+the work.  You can easily comply with the terms of this agreement by
+keeping this work in the same format with its attached full Project
+Gutenberg-tm License when you share it without charge with others.
+
+1.D.  The copyright laws of the place where you are located also govern
+what you can do with this work.  Copyright laws in most countries are in
+a constant state of change.  If you are outside the United States, check
+the laws of your country in addition to the terms of this agreement
+before downloading, copying, displaying, performing, distributing or
+creating derivative works based on this work or any other Project
+Gutenberg-tm work.  The Foundation makes no representations concerning
+the copyright status of any work in any country outside the United
+States.
+
+1.E.  Unless you have removed all references to Project Gutenberg:
+
+1.E.1.  The following sentence, with active links to, or other immediate
+access to, the full Project Gutenberg-tm License must appear prominently
+whenever any copy of a Project Gutenberg-tm work (any work on which the
+phrase "Project Gutenberg" appears, or with which the phrase "Project
+Gutenberg" is associated) is accessed, displayed, performed, viewed,
+copied or distributed:
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever.  You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.org
+
+1.E.2.  If an individual Project Gutenberg-tm electronic work is derived
+from the public domain (does not contain a notice indicating that it is
+posted with permission of the copyright holder), the work can be copied
+and distributed to anyone in the United States without paying any fees
+or charges.  If you are redistributing or providing access to a work
+with the phrase "Project Gutenberg" associated with or appearing on the
+work, you must comply either with the requirements of paragraphs 1.E.1
+through 1.E.7 or obtain permission for the use of the work and the
+Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
+1.E.9.
+
+1.E.3.  If an individual Project Gutenberg-tm electronic work is posted
+with the permission of the copyright holder, your use and distribution
+must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
+terms imposed by the copyright holder.  Additional terms will be linked
+to the Project Gutenberg-tm License for all works posted with the
+permission of the copyright holder found at the beginning of this work.
+
+1.E.4.  Do not unlink or detach or remove the full Project Gutenberg-tm
+License terms from this work, or any files containing a part of this
+work or any other work associated with Project Gutenberg-tm.
+
+1.E.5.  Do not copy, display, perform, distribute or redistribute this
+electronic work, or any part of this electronic work, without
+prominently displaying the sentence set forth in paragraph 1.E.1 with
+active links or immediate access to the full terms of the Project
+Gutenberg-tm License.
+
+1.E.6.  You may convert to and distribute this work in any binary,
+compressed, marked up, nonproprietary or proprietary form, including any
+word processing or hypertext form.  However, if you provide access to or
+distribute copies of a Project Gutenberg-tm work in a format other than
+"Plain Vanilla ASCII" or other format used in the official version
+posted on the official Project Gutenberg-tm web site (www.gutenberg.org),
+you must, at no additional cost, fee or expense to the user, provide a
+copy, a means of exporting a copy, or a means of obtaining a copy upon
+request, of the work in its original "Plain Vanilla ASCII" or other
+form.  Any alternate format must include the full Project Gutenberg-tm
+License as specified in paragraph 1.E.1.
+
+1.E.7.  Do not charge a fee for access to, viewing, displaying,
+performing, copying or distributing any Project Gutenberg-tm works
+unless you comply with paragraph 1.E.8 or 1.E.9.
+
+1.E.8.  You may charge a reasonable fee for copies of or providing
+access to or distributing Project Gutenberg-tm electronic works provided
+that
+
+- You pay a royalty fee of 20% of the gross profits you derive from
+     the use of Project Gutenberg-tm works calculated using the method
+     you already use to calculate your applicable taxes.  The fee is
+     owed to the owner of the Project Gutenberg-tm trademark, but he
+     has agreed to donate royalties under this paragraph to the
+     Project Gutenberg Literary Archive Foundation.  Royalty payments
+     must be paid within 60 days following each date on which you
+     prepare (or are legally required to prepare) your periodic tax
+     returns.  Royalty payments should be clearly marked as such and
+     sent to the Project Gutenberg Literary Archive Foundation at the
+     address specified in Section 4, "Information about donations to
+     the Project Gutenberg Literary Archive Foundation."
+
+- You provide a full refund of any money paid by a user who notifies
+     you in writing (or by e-mail) within 30 days of receipt that s/he
+     does not agree to the terms of the full Project Gutenberg-tm
+     License.  You must require such a user to return or
+     destroy all copies of the works possessed in a physical medium
+     and discontinue all use of and all access to other copies of
+     Project Gutenberg-tm works.
+
+- You provide, in accordance with paragraph 1.F.3, a full refund of any
+     money paid for a work or a replacement copy, if a defect in the
+     electronic work is discovered and reported to you within 90 days
+     of receipt of the work.
+
+- You comply with all other terms of this agreement for free
+     distribution of Project Gutenberg-tm works.
+
+1.E.9.  If you wish to charge a fee or distribute a Project Gutenberg-tm
+electronic work or group of works on different terms than are set
+forth in this agreement, you must obtain permission in writing from
+both the Project Gutenberg Literary Archive Foundation and Michael
+Hart, the owner of the Project Gutenberg-tm trademark.  Contact the
+Foundation as set forth in Section 3 below.
+
+1.F.
+
+1.F.1.  Project Gutenberg volunteers and employees expend considerable
+effort to identify, do copyright research on, transcribe and proofread
+public domain works in creating the Project Gutenberg-tm
+collection.  Despite these efforts, Project Gutenberg-tm electronic
+works, and the medium on which they may be stored, may contain
+"Defects," such as, but not limited to, incomplete, inaccurate or
+corrupt data, transcription errors, a copyright or other intellectual
+property infringement, a defective or damaged disk or other medium, a
+computer virus, or computer codes that damage or cannot be read by
+your equipment.
+
+1.F.2.  LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
+of Replacement or Refund" described in paragraph 1.F.3, the Project
+Gutenberg Literary Archive Foundation, the owner of the Project
+Gutenberg-tm trademark, and any other party distributing a Project
+Gutenberg-tm electronic work under this agreement, disclaim all
+liability to you for damages, costs and expenses, including legal
+fees.  YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
+LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
+PROVIDED IN PARAGRAPH F3.  YOU AGREE THAT THE FOUNDATION, THE
+TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
+LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
+INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+1.F.3.  LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
+defect in this electronic work within 90 days of receiving it, you can
+receive a refund of the money (if any) you paid for it by sending a
+written explanation to the person you received the work from.  If you
+received the work on a physical medium, you must return the medium with
+your written explanation.  The person or entity that provided you with
+the defective work may elect to provide a replacement copy in lieu of a
+refund.  If you received the work electronically, the person or entity
+providing it to you may choose to give you a second opportunity to
+receive the work electronically in lieu of a refund.  If the second copy
+is also defective, you may demand a refund in writing without further
+opportunities to fix the problem.
+
+1.F.4.  Except for the limited right of replacement or refund set forth
+in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
+WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
+
+1.F.5.  Some states do not allow disclaimers of certain implied
+warranties or the exclusion or limitation of certain types of damages.
+If any disclaimer or limitation set forth in this agreement violates the
+law of the state applicable to this agreement, the agreement shall be
+interpreted to make the maximum disclaimer or limitation permitted by
+the applicable state law.  The invalidity or unenforceability of any
+provision of this agreement shall not void the remaining provisions.
+
+1.F.6.  INDEMNITY - You agree to indemnify and hold the Foundation, the
+trademark owner, any agent or employee of the Foundation, anyone
+providing copies of Project Gutenberg-tm electronic works in accordance
+with this agreement, and any volunteers associated with the production,
+promotion and distribution of Project Gutenberg-tm electronic works,
+harmless from all liability, costs and expenses, including legal fees,
+that arise directly or indirectly from any of the following which you do
+or cause to occur: (a) distribution of this or any Project Gutenberg-tm
+work, (b) alteration, modification, or additions or deletions to any
+Project Gutenberg-tm work, and (c) any Defect you cause.
+
+
+Section  2.  Information about the Mission of Project Gutenberg-tm
+
+Project Gutenberg-tm is synonymous with the free distribution of
+electronic works in formats readable by the widest variety of computers
+including obsolete, old, middle-aged and new computers.  It exists
+because of the efforts of hundreds of volunteers and donations from
+people in all walks of life.
+
+Volunteers and financial support to provide volunteers with the
+assistance they need, is critical to reaching Project Gutenberg-tm's
+goals and ensuring that the Project Gutenberg-tm collection will
+remain freely available for generations to come.  In 2001, the Project
+Gutenberg Literary Archive Foundation was created to provide a secure
+and permanent future for Project Gutenberg-tm and future generations.
+To learn more about the Project Gutenberg Literary Archive Foundation
+and how your efforts and donations can help, see Sections 3 and 4
+and the Foundation web page at http://www.pglaf.org.
+
+
+Section 3.  Information about the Project Gutenberg Literary Archive
+Foundation
+
+The Project Gutenberg Literary Archive Foundation is a non profit
+501(c)(3) educational corporation organized under the laws of the
+state of Mississippi and granted tax exempt status by the Internal
+Revenue Service.  The Foundation's EIN or federal tax identification
+number is 64-6221541.  Its 501(c)(3) letter is posted at
+http://pglaf.org/fundraising.  Contributions to the Project Gutenberg
+Literary Archive Foundation are tax deductible to the full extent
+permitted by U.S. federal laws and your state's laws.
+
+The Foundation's principal office is located at 4557 Melan Dr. S.
+Fairbanks, AK, 99712., but its volunteers and employees are scattered
+throughout numerous locations.  Its business office is located at
+809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
+business@pglaf.org.  Email contact links and up to date contact
+information can be found at the Foundation's web site and official
+page at http://pglaf.org
+
+For additional contact information:
+     Dr. Gregory B. Newby
+     Chief Executive and Director
+     gbnewby@pglaf.org
+
+
+Section 4.  Information about Donations to the Project Gutenberg
+Literary Archive Foundation
+
+Project Gutenberg-tm depends upon and cannot survive without wide
+spread public support and donations to carry out its mission of
+increasing the number of public domain and licensed works that can be
+freely distributed in machine readable form accessible by the widest
+array of equipment including outdated equipment.  Many small donations
+($1 to $5,000) are particularly important to maintaining tax exempt
+status with the IRS.
+
+The Foundation is committed to complying with the laws regulating
+charities and charitable donations in all 50 states of the United
+States.  Compliance requirements are not uniform and it takes a
+considerable effort, much paperwork and many fees to meet and keep up
+with these requirements.  We do not solicit donations in locations
+where we have not received written confirmation of compliance.  To
+SEND DONATIONS or determine the status of compliance for any
+particular state visit http://pglaf.org
+
+While we cannot and do not solicit contributions from states where we
+have not met the solicitation requirements, we know of no prohibition
+against accepting unsolicited donations from donors in such states who
+approach us with offers to donate.
+
+International donations are gratefully accepted, but we cannot make
+any statements concerning tax treatment of donations received from
+outside the United States.  U.S. laws alone swamp our small staff.
+
+Please check the Project Gutenberg Web pages for current donation
+methods and addresses.  Donations are accepted in a number of other
+ways including checks, online payments and credit card donations.
+To donate, please visit: http://pglaf.org/donate
+
+
+Section 5.  General Information About Project Gutenberg-tm electronic
+works.
+
+Professor Michael S. Hart is the originator of the Project Gutenberg-tm
+concept of a library of electronic works that could be freely shared
+with anyone.  For thirty years, he produced and distributed Project
+Gutenberg-tm eBooks with only a loose network of volunteer support.
+
+
+Project Gutenberg-tm eBooks are often created from several printed
+editions, all of which are confirmed as Public Domain in the U.S.
+unless a copyright notice is included.  Thus, we do not necessarily
+keep eBooks in compliance with any particular paper edition.
+
+
+Most people start at our Web site which has the main PG search facility:
+
+     http://www.gutenberg.org
+
+This Web site includes information about Project Gutenberg-tm,
+including how to make donations to the Project Gutenberg Literary
+Archive Foundation, how to help produce our new eBooks, and how to
+subscribe to our email newsletter to hear about new eBooks.
diff --git a/hyracks-examples/text-example/textapp/pom.xml b/hyracks-examples/text-example/textapp/pom.xml
index b2c6d7e..4323a27 100644
--- a/hyracks-examples/text-example/textapp/pom.xml
+++ b/hyracks-examples/text-example/textapp/pom.xml
@@ -45,6 +45,90 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+      	<groupId>edu.uci.ics.hyracks</groupId>
+      	<artifactId>hyracks-maven-plugin</artifactId>
+      	<version>0.0.1</version>
+        <configuration>
+          <hyracksServerHome>${basedir}/../../../hyracks-server/target/hyracks-server-${project.version}-binary-assembly</hyracksServerHome>
+          <hyracksCLIHome>${basedir}/../../../hyracks-cli/target/hyracks-cli-${project.version}-binary-assembly</hyracksCLIHome>
+        </configuration>
+        <executions>
+          <execution>
+            <id>hyracks-cc-start</id>
+            <phase>pre-integration-test</phase>
+            <goals>
+              <goal>start-cc</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>hyracks-nc1-start</id>
+            <phase>pre-integration-test</phase>
+            <goals>
+              <goal>start-nc</goal>
+            </goals>
+            <configuration>
+              <nodeId>NC1</nodeId>
+              <dataIpAddress>127.0.0.1</dataIpAddress>
+              <ccHost>localhost</ccHost>
+            </configuration>
+          </execution>
+          <execution>
+            <id>hyracks-nc2-start</id>
+            <phase>pre-integration-test</phase>
+            <goals>
+              <goal>start-nc</goal>
+            </goals>
+            <configuration>
+              <nodeId>NC2</nodeId>
+              <dataIpAddress>127.0.0.1</dataIpAddress>
+              <ccHost>localhost</ccHost>
+            </configuration>
+          </execution>
+          <execution>
+            <id>deploy-app</id>
+            <phase>pre-integration-test</phase>
+            <goals>
+              <goal>deploy-app</goal>
+            </goals>
+            <configuration>
+              <ccHost>localhost</ccHost>
+              <appName>text</appName>
+              <harFile>${project.build.directory}/textapp-${project.version}-app-assembly.zip</harFile>
+            </configuration>
+          </execution>
+          <execution>
+            <id>stop-services</id>
+            <phase>post-integration-test</phase>
+            <goals>
+              <goal>stop-services</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+      	<groupId>org.apache.maven.plugins</groupId>
+      	<artifactId>maven-compiler-plugin</artifactId>
+      	<version>2.0.2</version>
+        <configuration>
+          <source>1.6</source>
+          <target>1.6</target>
+        </configuration>
+      </plugin>
+      <plugin>
+      	<groupId>org.apache.maven.plugins</groupId>
+      	<artifactId>maven-failsafe-plugin</artifactId>
+      	<version>2.8.1</version>
+      	<executions>
+      	  <execution>
+      	    <id>it</id>
+      	    <phase>integration-test</phase>
+      	    <goals>
+      	      <goal>integration-test</goal>
+      	    </goals>
+      	  </execution>
+      	</executions>
+      </plugin>
     </plugins>
   </build>
   <dependencies>
@@ -54,5 +138,19 @@
   		<version>0.1.6-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
+  	<dependency>
+  		<groupId>edu.uci.ics.hyracks.examples.text</groupId>
+  		<artifactId>textclient</artifactId>
+  		<version>0.1.6-SNAPSHOT</version>
+  		<type>jar</type>
+  		<scope>test</scope>
+  	</dependency>
+  	<dependency>
+  		<groupId>junit</groupId>
+  		<artifactId>junit</artifactId>
+  		<version>4.8.2</version>
+  		<type>jar</type>
+  		<scope>test</scope>
+  	</dependency>
   </dependencies>
 </project>
diff --git a/hyracks-examples/text-example/textapp/src/test/java/edu/uci/ics/hyracks/examples/text/test/WordCountIT.java b/hyracks-examples/text-example/textapp/src/test/java/edu/uci/ics/hyracks/examples/text/test/WordCountIT.java
new file mode 100644
index 0000000..9659288
--- /dev/null
+++ b/hyracks-examples/text-example/textapp/src/test/java/edu/uci/ics/hyracks/examples/text/test/WordCountIT.java
@@ -0,0 +1,25 @@
+package edu.uci.ics.hyracks.examples.text.test;
+
+import java.io.File;
+
+import org.junit.Test;
+
+import edu.uci.ics.hyracks.examples.text.client.WordCountMain;
+
+public class WordCountIT {
+    @Test
+    public void runWordCount() throws Exception {
+        WordCountMain.main(new String[] { "-host", "localhost", "-infile-splits", getInfileSplits(), "-outfile-splits",
+                getOutfileSplits(), "-algo", "-hash", "-app", "text" });
+    }
+
+    private String getInfileSplits() {
+        return "NC1:" + new File("data/file1.txt").getAbsolutePath() + ",NC2:"
+                + new File("data/file2.txt").getAbsolutePath();
+    }
+
+    private String getOutfileSplits() {
+        return "NC1:" + new File("target/wc1.txt").getAbsolutePath() + ",NC2:"
+                + new File("target/wc2.txt").getAbsolutePath();
+    }
+}
\ No newline at end of file
diff --git a/hyracks-examples/text-example/textclient/src/main/java/edu/uci/ics/hyracks/examples/text/client/WordCountMain.java b/hyracks-examples/text-example/textclient/src/main/java/edu/uci/ics/hyracks/examples/text/client/WordCountMain.java
index ace8a83..c13fcad 100644
--- a/hyracks-examples/text-example/textclient/src/main/java/edu/uci/ics/hyracks/examples/text/client/WordCountMain.java
+++ b/hyracks-examples/text-example/textclient/src/main/java/edu/uci/ics/hyracks/examples/text/client/WordCountMain.java
@@ -47,6 +47,7 @@
 import edu.uci.ics.hyracks.dataflow.std.file.FileSplit;
 import edu.uci.ics.hyracks.dataflow.std.file.FrameFileWriterOperatorDescriptor;
 import edu.uci.ics.hyracks.dataflow.std.file.IFileSplitProvider;
+import edu.uci.ics.hyracks.dataflow.std.file.PlainFileWriterOperatorDescriptor;
 import edu.uci.ics.hyracks.dataflow.std.group.HashGroupOperatorDescriptor;
 import edu.uci.ics.hyracks.dataflow.std.group.PreclusteredGroupOperatorDescriptor;
 import edu.uci.ics.hyracks.dataflow.std.sort.ExternalSortOperatorDescriptor;
@@ -73,6 +74,9 @@
         @Option(name = "-algo", usage = "Use Hash based grouping", required = true)
         public String algo;
 
+        @Option(name = "-format", usage = "Specify output format: binary/text (default: text)", required = false)
+        public String format = "text";
+
         @Option(name = "-hashtable-size", usage = "Hash table size (default: 8191)", required = false)
         public int htSize = 8191;
 
@@ -88,7 +92,7 @@
         IHyracksClientConnection hcc = new HyracksRMIConnection(options.host, options.port);
 
         JobSpecification job = createJob(parseFileSplits(options.inFileSplits), parseFileSplits(options.outFileSplits),
-                options.algo, options.htSize, options.sbSize);
+                options.algo, options.htSize, options.sbSize, options.format);
 
         long start = System.currentTimeMillis();
         UUID jobId = hcc.createJob(options.app, job);
@@ -113,7 +117,7 @@
     }
 
     private static JobSpecification createJob(FileSplit[] inSplits, FileSplit[] outSplits, String algo, int htSize,
-            int sbSize) {
+            int sbSize, String format) {
         JobSpecification spec = new JobSpecification();
 
         IFileSplitProvider splitsProvider = new ConstantFileSplitProvider(inSplits);
@@ -165,7 +169,8 @@
         }
 
         IFileSplitProvider outSplitProvider = new ConstantFileSplitProvider(outSplits);
-        FrameFileWriterOperatorDescriptor writer = new FrameFileWriterOperatorDescriptor(spec, outSplitProvider);
+        IOperatorDescriptor writer = "text".equalsIgnoreCase(format) ? new PlainFileWriterOperatorDescriptor(spec,
+                outSplitProvider, ",") : new FrameFileWriterOperatorDescriptor(spec, outSplitProvider);
         createPartitionConstraint(spec, writer, outSplits);
 
         IConnectorDescriptor gbyPrinterConn = new OneToOneConnectorDescriptor(spec);
diff --git a/hyracks-examples/text-example/texthelper/src/main/java/edu/uci/ics/hyracks/examples/text/WordTupleParserFactory.java b/hyracks-examples/text-example/texthelper/src/main/java/edu/uci/ics/hyracks/examples/text/WordTupleParserFactory.java
index 13a2c80..249e3bb 100644
--- a/hyracks-examples/text-example/texthelper/src/main/java/edu/uci/ics/hyracks/examples/text/WordTupleParserFactory.java
+++ b/hyracks-examples/text-example/texthelper/src/main/java/edu/uci/ics/hyracks/examples/text/WordTupleParserFactory.java
@@ -85,6 +85,7 @@
                 return false;
             }
 
+            boolean wordStarted = false;
             int p = start;
             while (true) {
                 if (p >= end) {
@@ -96,16 +97,57 @@
                     p -= (s - start);
                 }
                 char ch = buffer[p];
-                if (Character.isWhitespace(ch)) {
+                if (isNonWordChar(ch)) {
                     fStart = start;
                     fEnd = p;
                     start = p + 1;
-                    return true;
+                    if (wordStarted) {
+                        return true;
+                    }
+                } else {
+                    wordStarted = true;
                 }
                 ++p;
             }
         }
 
+        private boolean isNonWordChar(char ch) {
+            switch (ch) {
+                case '.':
+                case ',':
+                case '!':
+                case '@':
+                case '#':
+                case '$':
+                case '%':
+                case '^':
+                case '&':
+                case '*':
+                case '(':
+                case ')':
+                case '+':
+                case '=':
+                case ':':
+                case ';':
+                case '"':
+                case '\'':
+                case '{':
+                case '}':
+                case '[':
+                case ']':
+                case '|':
+                case '\\':
+                case '/':
+                case '<':
+                case '>':
+                case '?':
+                case '~':
+                case '`':
+                    return true;
+            }
+            return Character.isWhitespace(ch);
+        }
+
         private boolean readMore() throws IOException {
             if (start > 0) {
                 System.arraycopy(buffer, start, buffer, 0, end - start);
diff --git a/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/client/HyracksClient.java b/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/client/HyracksClient.java
index e4daf0b..a363221 100644
--- a/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/client/HyracksClient.java
+++ b/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/client/HyracksClient.java
@@ -1,93 +1,91 @@
 package edu.uci.ics.hyracks.hadoop.compat.client;
 
-import java.io.File;
-import java.util.List;
+import java.util.EnumSet;
+import java.util.HashSet;
 import java.util.Properties;
 import java.util.Set;
 import java.util.UUID;
 
-import org.apache.hadoop.mapred.JobConf;
-
-import edu.uci.ics.hyracks.hadoop.compat.util.ConfigurationConstants;
-import edu.uci.ics.hyracks.hadoop.compat.util.HadoopAdapter;
-import edu.uci.ics.hyracks.hadoop.compat.util.Utilities;
-import edu.uci.ics.hyracks.hadoop.compat.client.HyracksRunningJob;
 import edu.uci.ics.hyracks.api.client.HyracksRMIConnection;
+import edu.uci.ics.hyracks.api.job.JobFlag;
 import edu.uci.ics.hyracks.api.job.JobSpecification;
 import edu.uci.ics.hyracks.api.job.JobStatus;
+import edu.uci.ics.hyracks.hadoop.compat.util.ConfigurationConstants;
+import edu.uci.ics.hyracks.hadoop.compat.util.Utilities;
 
 public class HyracksClient {
 
-    private HadoopAdapter hadoopAdapter;
-    private static HyracksRMIConnection connection;
-    private static final String applicationName = "CompatibilityLayer";
+	private static HyracksRMIConnection connection;
+	private static final String jobProfilingKey = "jobProfilingKey";
+	Set<String> systemLibs;
 
-    public HyracksClient(String clusterConf) throws Exception {
-        Properties properties = Utilities.getProperties(clusterConf, '=');
-        String clusterController = (String) properties.get(ConfigurationConstants.clusterControllerHost);
-        String fileSystem = (String) properties.get(ConfigurationConstants.namenodeURL);
-        initialize(clusterController, fileSystem);
-    }
+	public HyracksClient(Properties clusterProperties) throws Exception {
+		initialize(clusterProperties);
+	}
 
-    public HyracksClient(String clusterControllerAddr, String fileSystem) throws Exception {
-        initialize(clusterControllerAddr, fileSystem);
-    }
+	private void initialize(Properties properties) throws Exception {
+		String clusterController = (String) properties
+				.get(ConfigurationConstants.clusterControllerHost);
+		connection = new HyracksRMIConnection(clusterController, 1099);
+		systemLibs = new HashSet<String>();
+		for (String systemLib : ConfigurationConstants.systemLibs) {
+			String systemLibPath = properties.getProperty(systemLib);
+			if (systemLibPath != null) {
+				systemLibs.add(systemLibPath);
+			}
+		}
+	}
 
-    private void initialize(String clusterControllerAddr, String namenodeUrl) throws Exception {
-        connection = new HyracksRMIConnection(clusterControllerAddr, 1099);
-        connection.destroyApplication(applicationName);
-        hadoopAdapter = new HadoopAdapter(namenodeUrl);
-    }
+	public HyracksClient(String clusterConf, char delimiter) throws Exception {
+		Properties properties = Utilities.getProperties(clusterConf, delimiter);
+		initialize(properties);
+	}
 
-    public HyracksRunningJob submitJobs(List<JobConf> confs, Set<String> requiredLibs) throws Exception {
-        JobSpecification spec = hadoopAdapter.getJobSpecification(confs);
-        String appName  = getApplicationNameHadoopJob(confs.get(0));
-        return submitJob(appName,spec, requiredLibs);
-    }
+	private Set<String> getRequiredLibs(Set<String> userLibs) {
+		Set<String> requiredLibs = new HashSet<String>();
+		for (String systemLib : systemLibs) {
+			requiredLibs.add(systemLib);
+		}
+		for (String userLib : userLibs) {
+			requiredLibs.add(userLib);
+		}
+		return requiredLibs;
+	}
 
-    private String getApplicationNameHadoopJob(JobConf jobConf) {
-        String jar = jobConf.getJar();
-        if( jar != null){
-            return jar.substring(jar.lastIndexOf("/") >=0 ? jar.lastIndexOf("/") +1 : 0);
-        }else {
-            return "" + System.currentTimeMillis();
-        }
-    }
-    
-    public HyracksRunningJob submitJob(JobConf conf, Set<String> requiredLibs) throws Exception {
-        JobSpecification spec = hadoopAdapter.getJobSpecification(conf);
-        String appName  = getApplicationNameHadoopJob(conf);
-        return submitJob(appName, spec, requiredLibs);
-    }
+	public JobStatus getJobStatus(UUID jobId) throws Exception {
+		return connection.getJobStatus(jobId);
+	}
 
-    public JobStatus getJobStatus(UUID jobId) throws Exception {
-        return connection.getJobStatus(jobId);
-    }
+	private void createApplication(String applicationName, Set<String> userLibs)
+			throws Exception {
+		connection.createApplication(applicationName, Utilities
+				.getHyracksArchive(applicationName, getRequiredLibs(userLibs)));
+	}
 
-    public HyracksRunningJob submitJob(String applicationName, JobSpecification spec, Set<String> requiredLibs) throws Exception {
-        UUID jobId = null;
-        try {
-            jobId = connection.createJob(applicationName, spec);
-        } catch (Exception e){
-            System.out.println(" application not found, creating application" + applicationName);
-            connection.createApplication(applicationName, Utilities.getHyracksArchive(applicationName, requiredLibs));
-            jobId = connection.createJob(applicationName, spec);
-        }
-        connection.start(jobId);
-        HyracksRunningJob runningJob = new HyracksRunningJob(jobId, spec, this);
-        return runningJob;
-    }
+	public HyracksRunningJob submitJob(String applicationName,
+			JobSpecification spec) throws Exception {
+		String jobProfilingVal = System.getenv(jobProfilingKey);
+		boolean doProfiling = ("true".equalsIgnoreCase(jobProfilingVal));
+		UUID jobId;
+		if (doProfiling) {
+			System.out.println("PROFILING");
+			jobId = connection.createJob(applicationName, spec, EnumSet
+					.of(JobFlag.PROFILE_RUNTIME));
+		} else {
+			jobId = connection.createJob(applicationName, spec);
+		}
+		connection.start(jobId);
+		HyracksRunningJob runningJob = new HyracksRunningJob(jobId, spec, this);
+		return runningJob;
+	}
 
-    public HadoopAdapter getHadoopAdapter() {
-        return hadoopAdapter;
-    }
+	public HyracksRunningJob submitJob(String applicationName,
+			JobSpecification spec, Set<String> userLibs) throws Exception {
+		createApplication(applicationName, userLibs);
+		return submitJob(applicationName, spec);
+	}
 
-    public void setHadoopAdapter(HadoopAdapter hadoopAdapter) {
-        this.hadoopAdapter = hadoopAdapter;
-    }
-
-    public void waitForCompleton(UUID jobId) throws Exception {
-        connection.waitForCompletion(jobId);
-    }
-
+	public void waitForCompleton(UUID jobId) throws Exception {
+		connection.waitForCompletion(jobId);
+	}
 }
diff --git a/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/driver/CompatibilityLayer.java b/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/driver/CompatibilityLayer.java
index 0b96041..37f4d34 100644
--- a/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/driver/CompatibilityLayer.java
+++ b/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/driver/CompatibilityLayer.java
@@ -1,5 +1,6 @@
 package edu.uci.ics.hyracks.hadoop.compat.driver;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -25,175 +26,183 @@
 
 public class CompatibilityLayer {
 
-    HyracksClient hyracksClient;
-    DCacheHandler dCacheHander = null;
-    Properties clusterConf;
-    Set<String> systemLibs;
+	HyracksClient hyracksClient;
+	DCacheHandler dCacheHander = null;
+	Properties clusterConf;
+	HadoopAdapter hadoopAdapter;
 
-    private static char configurationFileDelimiter = '=';
-    private static final String dacheKeyPrefix = "dcache.key";
+	private static char configurationFileDelimiter = '=';
+	private static final String dacheKeyPrefix = "dcache.key";
 
-    public CompatibilityLayer(CompatibilityConfig clConfig) throws Exception {
-        initialize(clConfig);
-    }
+	public CompatibilityLayer(CompatibilityConfig clConfig) throws Exception {
+		initialize(clConfig);
+	}
 
-    public HyracksRunningJob submitJobs(String[] jobFiles, Set<String> userLibs) throws Exception {
-        Set<String> requiredLibs = getRequiredLibs(userLibs);
-        List<JobConf> jobConfs = constructHadoopJobConfs(jobFiles);
-        Map<String, String> dcacheTasks = preparePreLaunchDCacheTasks(jobFiles[0]);
-        String tempDir = "/tmp";
-        if (dcacheTasks.size() > 0) {
-            HadoopAdapter hadoopAdapter = hyracksClient.getHadoopAdapter();
-            for (String key : dcacheTasks.keySet()) {
-                String destPath = tempDir + "/" + key + System.currentTimeMillis();
-                hadoopAdapter.getHDFSClient().copyToLocalFile(new Path(dcacheTasks.get(key)), new Path(destPath));
-                System.out.println(" source :" + dcacheTasks.get(key));
-                System.out.println(" dest :" + destPath);
-                System.out.println(" key :" + key);
-                System.out.println(" value :" + destPath);
-                dCacheHander.put(key, destPath);
-            }
-        }
-        HyracksRunningJob hyraxRunningJob = hyracksClient.submitJobs(jobConfs, requiredLibs);
-        return hyraxRunningJob;
-    }
+	private void initialize(CompatibilityConfig clConfig) throws Exception {
+		clusterConf = Utilities.getProperties(clConfig.clusterConf,
+				configurationFileDelimiter);
+		hadoopAdapter = new HadoopAdapter(clusterConf
+				.getProperty(ConfigurationConstants.namenodeURL));
+		hyracksClient = new HyracksClient(clusterConf);
+		dCacheHander = new DCacheHandler(clusterConf
+				.getProperty(ConfigurationConstants.dcacheServerConfiguration));
+	}
 
-    private Set<String> getRequiredLibs(Set<String> userLibs) {
-        Set<String> requiredLibs = new HashSet<String>();
-        for (String systemLib : systemLibs) {
-            requiredLibs.add(systemLib);
-        }
-        for (String userLib : userLibs) {
-            requiredLibs.add(userLib);
-        }
-        return requiredLibs;
-    }
+	public HyracksRunningJob submitJob(JobConf conf,Set<String> userLibs) throws Exception {
+		List<JobConf> jobConfs = new ArrayList<JobConf>();
+		jobConfs.add(conf);
+		String applicationName = conf.getJobName() + System.currentTimeMillis();
+		JobSpecification spec = hadoopAdapter.getJobSpecification(jobConfs);
+		HyracksRunningJob hyracksRunningJob = hyracksClient.submitJob(
+				applicationName, spec, userLibs);
+		return hyracksRunningJob; 
+	}
+	
+	public HyracksRunningJob submitJobs(String applicationName,
+			String[] jobFiles, Set<String> userLibs) throws Exception {
+		List<JobConf> jobConfs = constructHadoopJobConfs(jobFiles);
+		populateDCache(jobFiles[0]);
+		JobSpecification spec = hadoopAdapter.getJobSpecification(jobConfs);
+		HyracksRunningJob hyracksRunningJob = hyracksClient.submitJob(
+				applicationName, spec, userLibs);
+		return hyracksRunningJob;
+	}
 
-    private void initialize(CompatibilityConfig clConfig) throws Exception {
-        clusterConf = Utilities.getProperties(clConfig.clusterConf, configurationFileDelimiter);
-        systemLibs = new HashSet<String>();
-        for (String systemLib : ConfigurationConstants.systemLibs) {
-            String systemLibPath = clusterConf.getProperty(systemLib);
-            if (systemLibPath != null) {
-                systemLibs.add(systemLibPath);
-            }
-        }
-        String clusterControllerHost = clusterConf.getProperty(ConfigurationConstants.clusterControllerHost);
-        String dacheServerConfiguration = clusterConf.getProperty(ConfigurationConstants.dcacheServerConfiguration);
-        String fileSystem = clusterConf.getProperty(ConfigurationConstants.namenodeURL);
-        hyracksClient = new HyracksClient(clusterControllerHost, fileSystem);
-        try {
-            dCacheHander = new DCacheHandler(dacheServerConfiguration);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
+	public HyracksRunningJob submitJobs(String applicationName,
+			String[] jobFiles) throws Exception {
+		List<JobConf> jobConfs = constructHadoopJobConfs(jobFiles);
+		populateDCache(jobFiles[0]);
+		JobSpecification spec = hadoopAdapter.getJobSpecification(jobConfs);
+		HyracksRunningJob hyracksRunningJob = hyracksClient.submitJob(
+				applicationName, spec);
+		return hyracksRunningJob;
+	}
 
-    private Map<String, String> initializeCustomProperties(Properties properties, String prefix) {
-        Map<String, String> foundProperties = new HashMap<String, String>();
-        Set<Entry<Object, Object>> entrySet = properties.entrySet();
-        for (Entry entry : entrySet) {
-            String key = (String) entry.getKey();
-            String value = (String) entry.getValue();
-            if ((key.startsWith(prefix))) {
-                String actualKey = key.substring(prefix.length() + 1); // "cut off '<prefix>.' from the beginning"
-                foundProperties.put(actualKey, value);
-            }
-        }
-        return foundProperties;
-    }
+	private void populateDCache(String jobFile) throws IOException {
+		Map<String, String> dcacheTasks = preparePreLaunchDCacheTasks(jobFile);
+		String tempDir = "/tmp";
+		if (dcacheTasks.size() > 0) {
+			for (String key : dcacheTasks.keySet()) {
+				String destPath = tempDir + "/" + key
+						+ System.currentTimeMillis();
+				hadoopAdapter.getHDFSClient().copyToLocalFile(
+						new Path(dcacheTasks.get(key)), new Path(destPath));
+				System.out.println(" source :" + dcacheTasks.get(key));
+				System.out.println(" dest :" + destPath);
+				System.out.println(" key :" + key);
+				System.out.println(" value :" + destPath);
+				dCacheHander.put(key, destPath);
+			}
+		}
+	}
 
-    public Map<String, String> preparePreLaunchDCacheTasks(String jobFile) {
-        Properties jobProperties = Utilities.getProperties(jobFile, ',');
-        Map<String, String> dcacheTasks = new HashMap<String, String>();
-        Map<String, String> dcacheKeys = initializeCustomProperties(jobProperties, dacheKeyPrefix);
-        for (String key : dcacheKeys.keySet()) {
-            String sourcePath = dcacheKeys.get(key);
-            if (sourcePath != null) {
-                dcacheTasks.put(key, sourcePath);
-            }
-        }
-        return dcacheTasks;
-    }
+	private String getApplicationNameForHadoopJob(JobConf jobConf) {
+		String jar = jobConf.getJar();
+		if (jar != null) {
+			return jar.substring(jar.lastIndexOf("/") >= 0 ? jar
+					.lastIndexOf("/") + 1 : 0);
+		} else {
+			return "" + System.currentTimeMillis();
+		}
+	}
 
-    public void waitForCompletion(UUID jobId) throws Exception {
-        hyracksClient.waitForCompleton(jobId);
-    }
+	private Map<String, String> initializeCustomProperties(
+			Properties properties, String prefix) {
+		Map<String, String> foundProperties = new HashMap<String, String>();
+		Set<Entry<Object, Object>> entrySet = properties.entrySet();
+		for (Entry entry : entrySet) {
+			String key = (String) entry.getKey();
+			String value = (String) entry.getValue();
+			if ((key.startsWith(prefix))) {
+				String actualKey = key.substring(prefix.length() + 1); // "cut off '<prefix>.' from the beginning"
+				foundProperties.put(actualKey, value);
+			}
+		}
+		return foundProperties;
+	}
 
-    public HyracksRunningJob submitHadoopJobToHyrax(JobConf jobConf, Set<String> userLibs) {
-        HyracksRunningJob hyraxRunningJob = null;
-        List<JobConf> jobConfs = new ArrayList<JobConf>();
-        jobConfs.add(jobConf);
-        try {
-            hyraxRunningJob = hyracksClient.submitJobs(jobConfs, getRequiredLibs(userLibs));
-            System.out.println(" Result in " + jobConf.get("mapred.output.dir"));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return hyraxRunningJob;
-    }
+	public Map<String, String> preparePreLaunchDCacheTasks(String jobFile) {
+		Properties jobProperties = Utilities.getProperties(jobFile, ',');
+		Map<String, String> dcacheTasks = new HashMap<String, String>();
+		Map<String, String> dcacheKeys = initializeCustomProperties(
+				jobProperties, dacheKeyPrefix);
+		for (String key : dcacheKeys.keySet()) {
+			String sourcePath = dcacheKeys.get(key);
+			if (sourcePath != null) {
+				dcacheTasks.put(key, sourcePath);
+			}
+		}
+		return dcacheTasks;
+	}
 
-    public HyracksRunningJob submitJob(String appName, JobSpecification jobSpec, Set<String> userLibs) {
-        HyracksRunningJob hyraxRunningJob = null;
-        try {
-            hyraxRunningJob = hyracksClient.submitJob(appName, jobSpec, getRequiredLibs(userLibs));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return hyraxRunningJob;
-    }
+	public void waitForCompletion(UUID jobId) throws Exception {
+		hyracksClient.waitForCompleton(jobId);
+	}
 
-    private List<JobConf> constructHadoopJobConfs(String[] jobFiles) throws Exception {
-        List<JobConf> jobConfs = new ArrayList<JobConf>();
-        for (String jobFile : jobFiles) {
-            jobConfs.add(constructHadoopJobConf(jobFile));
-        }
-        return jobConfs;
-    }
+	private List<JobConf> constructHadoopJobConfs(String[] jobFiles)
+			throws Exception {
+		List<JobConf> jobConfs = new ArrayList<JobConf>();
+		for (String jobFile : jobFiles) {
+			jobConfs.add(constructHadoopJobConf(jobFile));
+		}
+		return jobConfs;
+	}
 
-    private JobConf constructHadoopJobConf(String jobFile) {
-        Properties jobProperties = Utilities.getProperties(jobFile, '=');
-        JobConf conf = hyracksClient.getHadoopAdapter().getConf();
-        for (Entry entry : jobProperties.entrySet()) {
-            conf.set((String) entry.getKey(), (String) entry.getValue());
-            System.out.println((String) entry.getKey() + " : " + (String) entry.getValue());
-        }
-        return conf;
-    }
+	private JobConf constructHadoopJobConf(String jobFile) {
+		Properties jobProperties = Utilities.getProperties(jobFile, '=');
+		JobConf conf = new JobConf(hadoopAdapter.getConf());
+		for (Entry entry : jobProperties.entrySet()) {
+			conf.set((String) entry.getKey(), (String) entry.getValue());
+			System.out.println((String) entry.getKey() + " : "
+					+ (String) entry.getValue());
+		}
+		return conf;
+	}
 
-    private String[] getJobs(CompatibilityConfig clConfig) {
-        return clConfig.jobFiles == null ? new String[0] : clConfig.jobFiles.split(",");
-    }
+	private String[] getJobs(CompatibilityConfig clConfig) {
+		return clConfig.jobFiles == null ? new String[0] : clConfig.jobFiles
+				.split(",");
+	}
 
-    public static void main(String args[]) throws Exception {
-        long startTime = System.nanoTime();
-        CompatibilityConfig clConfig = new CompatibilityConfig();
-        CmdLineParser cp = new CmdLineParser(clConfig);
-        try {
-            cp.parseArgument(args);
-        } catch (Exception e) {
-            System.err.println(e.getMessage());
-            cp.printUsage(System.err);
-            return;
-        }
-        CompatibilityLayer compatLayer = new CompatibilityLayer(clConfig);
-        String[] jobFiles = compatLayer.getJobs(clConfig);
-        String[] tempUserLibs = clConfig.userLibs == null ? new String[0] : clConfig.userLibs.split(",");
-        Set<String> userLibs = new HashSet<String>();
-        for(String userLib : tempUserLibs) {
-            userLibs.add(userLib);
-        }
-        HyracksRunningJob hyraxRunningJob = null;
-        try {
-            hyraxRunningJob = compatLayer.submitJobs(jobFiles, userLibs);
-            compatLayer.waitForCompletion(hyraxRunningJob.getJobId());
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        hyraxRunningJob.waitForCompletion();
-        long end_time = System.nanoTime();
-        System.out.println("TOTAL TIME (from Launch to Completion):" + ((end_time - startTime) / (float) 1000000000.0)
-                + " seconds.");
-    }
-
+	public static void main(String args[]) throws Exception {
+		long startTime = System.nanoTime();
+		CompatibilityConfig clConfig = new CompatibilityConfig();
+		CmdLineParser cp = new CmdLineParser(clConfig);
+		try {
+			cp.parseArgument(args);
+		} catch (Exception e) {
+			System.err.println(e.getMessage());
+			cp.printUsage(System.err);
+			return;
+		}
+		CompatibilityLayer compatLayer = new CompatibilityLayer(clConfig);
+		String applicationName = clConfig.applicationName;
+		String[] jobFiles = compatLayer.getJobs(clConfig);
+		String[] userLibraries = null;
+		if (clConfig.userLibs != null) {
+			userLibraries = clConfig.userLibs.split(",");
+		}
+		try {
+			HyracksRunningJob hyraxRunningJob = null;
+			if (userLibraries != null) {
+				Set<String> userLibs = new HashSet<String>();
+				for (String userLib : userLibraries) {
+					userLibs.add(userLib);
+				}
+				hyraxRunningJob = compatLayer.submitJobs(applicationName,
+						jobFiles, userLibs);
+			} else {
+				hyraxRunningJob = compatLayer.submitJobs(applicationName,
+						jobFiles);
+			}
+			compatLayer.waitForCompletion(hyraxRunningJob.getJobId());
+			long end_time = System.nanoTime();
+			System.out.println("TOTAL TIME (from Launch to Completion):"
+					+ ((end_time - startTime) / (float) 1000000000.0)
+					+ " seconds.");
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
 }
diff --git a/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/util/CompatibilityConfig.java b/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/util/CompatibilityConfig.java
index 1dd266f..6d94bc7 100644
--- a/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/util/CompatibilityConfig.java
+++ b/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/util/CompatibilityConfig.java
@@ -4,17 +4,20 @@
 
 public class CompatibilityConfig {
 
-    @Option(name = "-cluster", required = true, usage = "Defines the path to the configuration file that provides the following info: +"
-            + " (1) Address of HyracksClusterController service" + " (2) Address of Hadoop namenode service")
-    public String clusterConf;
+	@Option(name = "-cluster", required = true, usage = "Defines the path to the configuration file that provides the following info: +"
+			+ " (1) Address of HyracksClusterController service"
+			+ " (2) Address of Hadoop namenode service")
+	public String clusterConf;
 
-    @Option(name = "-jobFiles", usage = "Comma separated list of jobFiles. "
-            + "Each job file defines the hadoop job + " + "The order in the list defines the sequence in which"
-            + "the jobs are to be executed")
-    public String jobFiles;
+	@Option(name = "-jobFiles", usage = "Comma separated list of jobFiles. "
+			+ "Each job file defines the hadoop job + "
+			+ "The order in the list defines the sequence in which"
+			+ "the jobs are to be executed")
+	public String jobFiles;
 
-    @Option(name = "-userLibs", usage = " A comma separated list of jar files that are required to be addedd to classpath when running "
-            + " mappers/reducers etc ")
-    public String userLibs;
+	@Option(name = "-applicationName", usage = " The application as part of which the job executes")
+	public String applicationName;
 
+	@Option(name = "-userLibs", usage = " A comma separated list of jar files that are required to be addedd to classpath when running ")
+	public String userLibs;
 }
diff --git a/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/util/HadoopAdapter.java b/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/util/HadoopAdapter.java
index 4c91906..28833d7 100644
--- a/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/util/HadoopAdapter.java
+++ b/hyracks-hadoop-compat/src/main/java/edu/uci/ics/hyracks/hadoop/compat/util/HadoopAdapter.java
@@ -47,310 +47,360 @@
 
 public class HadoopAdapter {
 
-    public static final String FS_DEFAULT_NAME = "fs.default.name";
-    private JobConf jobConf;
-    private Map<OperatorDescriptorId,Integer> operatorInstanceCount = new HashMap<OperatorDescriptorId,Integer>();
-    public static final String HYRACKS_EX_SORT_FRAME_LIMIT = "HYRACKS_EX_SORT_FRAME_LIMIT"; 
-    public static final int DEFAULT_EX_SORT_FRAME_LIMIT = 4096;
-    public static final int DEFAULT_MAX_MAPPERS = 40;
-    public static final int DEFAULT_MAX_REDUCERS= 40;
-    public static final String MAX_MAPPERS_KEY = "maxMappers";
-    public static final String MAX_REDUCERS_KEY = "maxReducers";
-    public static final String EX_SORT_FRAME_LIMIT_KEY = "sortFrameLimit";
-    
-    private  int maxMappers = DEFAULT_MAX_MAPPERS;
-    private  int maxReducers = DEFAULT_MAX_REDUCERS;
-    private int exSortFrame = DEFAULT_EX_SORT_FRAME_LIMIT;
-    
-    class NewHadoopConstants {
-    	public static final String INPUT_FORMAT_CLASS_ATTR = "mapreduce.inputformat.class";
-    	public static final String MAP_CLASS_ATTR = "mapreduce.map.class";
-    	public static final String COMBINE_CLASS_ATTR = "mapreduce.combine.class";
-    	public static final String REDUCE_CLASS_ATTR = "mapreduce.reduce.class";
-    	public static final String OUTPUT_FORMAT_CLASS_ATTR = "mapreduce.outputformat.class";
-    	public static final String PARTITIONER_CLASS_ATTR = "mapreduce.partitioner.class";
-    }
-    
-    public HadoopAdapter(String namenodeUrl) {
-        jobConf = new JobConf(true);
-        jobConf.set(FS_DEFAULT_NAME, namenodeUrl);
-        if(System.getenv(MAX_MAPPERS_KEY) != null) {
-            maxMappers = Integer.parseInt(System.getenv(MAX_MAPPERS_KEY));
-        }
-        if(System.getenv(MAX_REDUCERS_KEY) != null) {
-            maxReducers= Integer.parseInt(System.getenv(MAX_REDUCERS_KEY));
-        }
-        if(System.getenv(EX_SORT_FRAME_LIMIT_KEY) != null) {
-            exSortFrame= Integer.parseInt(System.getenv(EX_SORT_FRAME_LIMIT_KEY));
-        }
-    }
+	public static final String FS_DEFAULT_NAME = "fs.default.name";
+	private JobConf jobConf;
+	private Map<OperatorDescriptorId, Integer> operatorInstanceCount = new HashMap<OperatorDescriptorId, Integer>();
+	public static final String HYRACKS_EX_SORT_FRAME_LIMIT = "HYRACKS_EX_SORT_FRAME_LIMIT";
+	public static final int DEFAULT_EX_SORT_FRAME_LIMIT = 4096;
+	public static final int DEFAULT_MAX_MAPPERS = 40;
+	public static final int DEFAULT_MAX_REDUCERS = 40;
+	public static final String MAX_MAPPERS_KEY = "maxMappers";
+	public static final String MAX_REDUCERS_KEY = "maxReducers";
+	public static final String EX_SORT_FRAME_LIMIT_KEY = "sortFrameLimit";
 
-    private String getEnvironmentVariable(String key, String def) {
-        String ret =  System.getenv(key);
-        return ret != null ? ret : def;
-    }
-    
-    public JobConf getConf() {
-        return jobConf;
-    }
+	private int maxMappers = DEFAULT_MAX_MAPPERS;
+	private int maxReducers = DEFAULT_MAX_REDUCERS;
+	private int exSortFrame = DEFAULT_EX_SORT_FRAME_LIMIT;
 
-    public static VersionedProtocol getProtocol(Class protocolClass, InetSocketAddress inetAddress, JobConf jobConf)
-            throws IOException {
-        VersionedProtocol versionedProtocol = RPC.getProxy(protocolClass, ClientProtocol.versionID, inetAddress,
-                jobConf);
-        return versionedProtocol;
-    }
+	class NewHadoopConstants {
+		public static final String INPUT_FORMAT_CLASS_ATTR = "mapreduce.inputformat.class";
+		public static final String MAP_CLASS_ATTR = "mapreduce.map.class";
+		public static final String COMBINE_CLASS_ATTR = "mapreduce.combine.class";
+		public static final String REDUCE_CLASS_ATTR = "mapreduce.reduce.class";
+		public static final String OUTPUT_FORMAT_CLASS_ATTR = "mapreduce.outputformat.class";
+		public static final String PARTITIONER_CLASS_ATTR = "mapreduce.partitioner.class";
+	}
 
-    private static RecordDescriptor getHadoopRecordDescriptor(String className1, String className2) {
-        RecordDescriptor recordDescriptor = null;
-        try {
-            recordDescriptor = DatatypeHelper.createKeyValueRecordDescriptor((Class<? extends Writable>) Class
-                    .forName(className1), (Class<? extends Writable>) Class.forName(className2));
-        } catch (ClassNotFoundException cnfe) {
-            cnfe.printStackTrace();
-        }
-        return recordDescriptor;
-    }
+	public HadoopAdapter(String namenodeUrl) {
+		jobConf = new JobConf(true);
+		jobConf.set(FS_DEFAULT_NAME, namenodeUrl);
+		if (System.getenv(MAX_MAPPERS_KEY) != null) {
+			maxMappers = Integer.parseInt(System.getenv(MAX_MAPPERS_KEY));
+		}
+		if (System.getenv(MAX_REDUCERS_KEY) != null) {
+			maxReducers = Integer.parseInt(System.getenv(MAX_REDUCERS_KEY));
+		}
+		if (System.getenv(EX_SORT_FRAME_LIMIT_KEY) != null) {
+			exSortFrame = Integer.parseInt(System
+					.getenv(EX_SORT_FRAME_LIMIT_KEY));
+		}
+	}
 
-    private Object[] getInputSplits(JobConf conf) throws IOException, ClassNotFoundException, InterruptedException {
-        if (conf.getUseNewMapper()) {
-        	return getNewInputSplits(conf);
-        } else {
-        	return getOldInputSplits(conf);
-        }
-    }
-    
-    private org.apache.hadoop.mapreduce.InputSplit[] getNewInputSplits(JobConf conf) throws ClassNotFoundException, IOException, InterruptedException {
-    	org.apache.hadoop.mapreduce.InputSplit[] splits = null;
-    	JobContext context = new JobContext(conf,null);
-    	org.apache.hadoop.mapreduce.InputFormat inputFormat = ReflectionUtils.newInstance(context.getInputFormatClass(),conf);
-    	List<org.apache.hadoop.mapreduce.InputSplit> inputSplits = inputFormat.getSplits(context);
-    	return inputSplits.toArray(new org.apache.hadoop.mapreduce.InputSplit[]{});
-    }
-    
-    private InputSplit[] getOldInputSplits(JobConf conf) throws IOException  {
-      	InputFormat inputFormat = conf.getInputFormat();
-    	return inputFormat.getSplits(conf, conf.getNumMapTasks());
-    }
-   
-    private void configurePartitionCountConstraint(JobSpecification spec, IOperatorDescriptor operator,int instanceCount){
-        PartitionConstraintHelper.addPartitionCountConstraint(spec, operator, instanceCount);
-        operatorInstanceCount.put(operator.getOperatorId(),instanceCount);
-    }
+	private String getEnvironmentVariable(String key, String def) {
+		String ret = System.getenv(key);
+		return ret != null ? ret : def;
+	}
 
-    public HadoopMapperOperatorDescriptor getMapper(JobConf conf,JobSpecification spec, IOperatorDescriptor previousOp)
-            throws Exception {
-        boolean selfRead = previousOp == null;
-        IHadoopClassFactory classFactory = new ClasspathBasedHadoopClassFactory();
-        HadoopMapperOperatorDescriptor mapOp = null;
-        if(selfRead) {
-            Object [] splits = getInputSplits(conf,maxMappers);
-            mapOp = new HadoopMapperOperatorDescriptor(spec, conf, splits,classFactory);
-	    configurePartitionCountConstraint(spec,mapOp,splits.length);
-            System.out.println("No of  mappers :" + splits.length);
-        } else {
-	    configurePartitionCountConstraint(spec,mapOp,getInstanceCount(previousOp));
-            mapOp = new HadoopMapperOperatorDescriptor(spec,conf,classFactory);
-            spec.connect(new OneToOneConnectorDescriptor(spec), previousOp, 0, mapOp, 0);
-        }
-        return mapOp;
-    }
+	public JobConf getConf() {
+		return jobConf;
+	}
 
-    public HadoopReducerOperatorDescriptor getReducer(JobConf conf, JobSpecification spec) {
-        HadoopReducerOperatorDescriptor reduceOp = new HadoopReducerOperatorDescriptor(spec, conf, null,
-                new ClasspathBasedHadoopClassFactory());
-        return reduceOp;
-    }
+	public static VersionedProtocol getProtocol(Class protocolClass,
+			InetSocketAddress inetAddress, JobConf jobConf) throws IOException {
+		VersionedProtocol versionedProtocol = RPC.getProxy(protocolClass,
+				ClientProtocol.versionID, inetAddress, jobConf);
+		return versionedProtocol;
+	}
 
-    public FileSystem getHDFSClient() {
-        FileSystem fileSystem = null;
-        try {
-            fileSystem = FileSystem.get(jobConf);
-        } catch (IOException ioe) {
-            ioe.printStackTrace();
-        }
-        return fileSystem;
-    }
+	private static RecordDescriptor getHadoopRecordDescriptor(
+			String className1, String className2) {
+		RecordDescriptor recordDescriptor = null;
+		try {
+			recordDescriptor = DatatypeHelper.createKeyValueRecordDescriptor(
+					(Class<? extends Writable>) Class.forName(className1),
+					(Class<? extends Writable>) Class.forName(className2));
+		} catch (ClassNotFoundException cnfe) {
+			cnfe.printStackTrace();
+		}
+		return recordDescriptor;
+	}
 
-    public JobSpecification getJobSpecification(List<JobConf> jobConfs) throws Exception {
-        JobSpecification spec = null;
-        if (jobConfs.size() == 1) {
-            spec = getJobSpecification(jobConfs.get(0));
-        } else {
-            spec = getPipelinedSpec(jobConfs);
-        }
-        return spec;
-    }
+	private Object[] getInputSplits(JobConf conf) throws IOException,
+			ClassNotFoundException, InterruptedException {
+		if (conf.getUseNewMapper()) {
+			return getNewInputSplits(conf);
+		} else {
+			return getOldInputSplits(conf);
+		}
+	}
 
-    private IOperatorDescriptor configureOutput( IOperatorDescriptor previousOperator, JobConf conf,
-            JobSpecification spec) throws Exception {
-	int instanceCountPreviousOperator = operatorInstanceCount.get(previousOperator.getOperatorId());
-        int numOutputters = conf.getNumReduceTasks() != 0 ? conf.getNumReduceTasks() : instanceCountPreviousOperator;
-        HadoopWriteOperatorDescriptor writer = null;
-        writer = new HadoopWriteOperatorDescriptor(spec, conf, numOutputters);
-	configurePartitionCountConstraint(spec,writer,numOutputters);
-        spec.connect(new OneToOneConnectorDescriptor(spec), previousOperator, 0, writer, 0);
-        return writer;
-    }
+	private org.apache.hadoop.mapreduce.InputSplit[] getNewInputSplits(
+			JobConf conf) throws ClassNotFoundException, IOException,
+			InterruptedException {
+		org.apache.hadoop.mapreduce.InputSplit[] splits = null;
+		JobContext context = new JobContext(conf, null);
+		org.apache.hadoop.mapreduce.InputFormat inputFormat = ReflectionUtils
+				.newInstance(context.getInputFormatClass(), conf);
+		List<org.apache.hadoop.mapreduce.InputSplit> inputSplits = inputFormat
+				.getSplits(context);
+		return inputSplits
+				.toArray(new org.apache.hadoop.mapreduce.InputSplit[] {});
+	}
 
+	private InputSplit[] getOldInputSplits(JobConf conf) throws IOException {
+		InputFormat inputFormat = conf.getInputFormat();
+		return inputFormat.getSplits(conf, conf.getNumMapTasks());
+	}
 
-    private int getInstanceCount(IOperatorDescriptor operator) {
-        return operatorInstanceCount.get(operator.getOperatorId());
-    } 
+	private void configurePartitionCountConstraint(JobSpecification spec,
+			IOperatorDescriptor operator, int instanceCount) {
+		PartitionConstraintHelper.addPartitionCountConstraint(spec, operator,
+				instanceCount);
+		operatorInstanceCount.put(operator.getOperatorId(), instanceCount);
+	}
 
-    private IOperatorDescriptor addCombiner(IOperatorDescriptor previousOperator, JobConf jobConf,
-            JobSpecification spec) throws Exception {
-        boolean useCombiner = (jobConf.getCombinerClass() != null);
-        IOperatorDescriptor mapSideOutputOp = previousOperator;
-        if (useCombiner) {
-            System.out.println("Using Combiner:" + jobConf.getCombinerClass().getName());
-            IOperatorDescriptor mapSideCombineSortOp = getExternalSorter(jobConf, spec);
-	    configurePartitionCountConstraint(spec,mapSideCombineSortOp,getInstanceCount(previousOperator));
-    
-            HadoopReducerOperatorDescriptor mapSideCombineReduceOp = getReducer(jobConf, spec);
-	    configurePartitionCountConstraint(spec,mapSideCombineReduceOp,getInstanceCount(previousOperator));
-            spec.connect(new OneToOneConnectorDescriptor(spec), previousOperator, 0, mapSideCombineSortOp, 0);
-            spec.connect(new OneToOneConnectorDescriptor(spec), mapSideCombineSortOp, 0, mapSideCombineReduceOp, 0);
-            mapSideOutputOp = mapSideCombineSortOp;
-        }
-        return mapSideOutputOp;
-    }
-    
-    private int getNumReduceTasks(JobConf jobConf) {
-        int numReduceTasks = Math.min(maxReducers,jobConf.getNumReduceTasks());
-        return numReduceTasks;
-    }
-    
-    private IOperatorDescriptor addReducer(IOperatorDescriptor previousOperator, JobConf jobConf,
-            JobSpecification spec) throws Exception {
-        IOperatorDescriptor mrOutputOperator = previousOperator;
-        if (jobConf.getNumReduceTasks() != 0) {
-            IOperatorDescriptor sorter = getExternalSorter(jobConf, spec);
-            HadoopReducerOperatorDescriptor reducer = getReducer(jobConf, spec);
-            int numReduceTasks = getNumReduceTasks(jobConf);
-            System.out.println("No of Reducers :" + numReduceTasks);
-	    configurePartitionCountConstraint(spec,sorter,numReduceTasks);
-	    configurePartitionCountConstraint(spec,reducer,numReduceTasks);
-    
-            IConnectorDescriptor mToNConnectorDescriptor = getMtoNHashPartitioningConnector(jobConf, spec);
-            spec.connect(mToNConnectorDescriptor, previousOperator, 0, sorter, 0);
-            spec.connect(new OneToOneConnectorDescriptor(spec), sorter, 0, reducer, 0);
-            mrOutputOperator = reducer;
-        }   
-        return mrOutputOperator;
-    }
-    
-    private long getInputSize(Object[] splits,JobConf conf) throws IOException, InterruptedException {
-        long totalInputSize =0;
-    	if(conf.getUseNewMapper()) {
-        	for (org.apache.hadoop.mapreduce.InputSplit split : (org.apache.hadoop.mapreduce.InputSplit[])splits) {
-        	    totalInputSize += split.getLength();
-            }                                       
-        } else {
-	    	for (InputSplit split : (InputSplit[])splits) {
-	            totalInputSize += split.getLength();
-	        }
-        }
-    	return totalInputSize;
-    }
-    
-    private Object[] getInputSplits(JobConf conf, int desiredMaxMappers) throws Exception {
-        Object[] splits = getInputSplits(conf);
-        System.out.println(" initial split count :" + splits.length);
-        System.out.println(" desired mappers :" + desiredMaxMappers);
-        if (splits.length > desiredMaxMappers) {
-            long totalInputSize = getInputSize(splits,conf);
-            long goalSize = (totalInputSize/desiredMaxMappers);
-            System.out.println(" total input length :" + totalInputSize);
-            System.out.println(" goal size :" + goalSize);
-            conf.setLong("mapred.min.split.size", goalSize);
-            conf.setNumMapTasks(desiredMaxMappers);
-            splits = getInputSplits(conf);
-            System.out.println(" revised split count :" + splits.length);
-        }
-        return splits; 
-    }
-    
-    public JobSpecification getPipelinedSpec(List<JobConf> jobConfs) throws Exception {
-        JobSpecification spec = new JobSpecification();
-        Iterator<JobConf> iterator = jobConfs.iterator();
-        JobConf firstMR = iterator.next();
-        IOperatorDescriptor mrOutputOp = configureMapReduce(null, spec,firstMR);
-        while (iterator.hasNext())
-            for (JobConf currentJobConf : jobConfs) {
-                mrOutputOp = configureMapReduce(mrOutputOp, spec , currentJobConf);
-            }
-        configureOutput(mrOutputOp, jobConfs.get(jobConfs.size() - 1), spec);
-        return spec;
-    }
+	public HadoopMapperOperatorDescriptor getMapper(JobConf conf,
+			JobSpecification spec, IOperatorDescriptor previousOp)
+			throws Exception {
+		boolean selfRead = previousOp == null;
+		IHadoopClassFactory classFactory = new ClasspathBasedHadoopClassFactory();
+		HadoopMapperOperatorDescriptor mapOp = null;
+		if (selfRead) {
+			Object[] splits = getInputSplits(conf, maxMappers);
+			mapOp = new HadoopMapperOperatorDescriptor(spec, conf, splits,
+					classFactory);
+			configurePartitionCountConstraint(spec, mapOp, splits.length);
+		} else {
+			configurePartitionCountConstraint(spec, mapOp,
+					getInstanceCount(previousOp));
+			mapOp = new HadoopMapperOperatorDescriptor(spec, conf, classFactory);
+			spec.connect(new OneToOneConnectorDescriptor(spec), previousOp, 0,
+					mapOp, 0);
+		}
+		return mapOp;
+	}
 
-    public JobSpecification getJobSpecification(JobConf conf) throws Exception {
-        JobSpecification spec = new JobSpecification();
-        IOperatorDescriptor mrOutput = configureMapReduce(null,spec, conf);
-        IOperatorDescriptor printer = configureOutput(mrOutput, conf, spec);
-        spec.addRoot(printer);
-        System.out.println(spec);
-        return spec;
-    }
-    
-    private IOperatorDescriptor configureMapReduce(IOperatorDescriptor previousOuputOp, JobSpecification spec, JobConf conf) throws Exception {
-        IOperatorDescriptor mapper = getMapper(conf,spec,previousOuputOp);
-        IOperatorDescriptor mapSideOutputOp = addCombiner(mapper,conf,spec);
-        IOperatorDescriptor reducer = addReducer(mapSideOutputOp, conf, spec);
-        return reducer; 
-    }
+	public HadoopReducerOperatorDescriptor getReducer(JobConf conf,
+			JobSpecification spec, boolean useAsCombiner) {
+		HadoopReducerOperatorDescriptor reduceOp = new HadoopReducerOperatorDescriptor(
+				spec, conf, null, new ClasspathBasedHadoopClassFactory(),
+				useAsCombiner);
+		return reduceOp;
+	}
 
-    public static InMemorySortOperatorDescriptor getInMemorySorter(JobConf conf, JobSpecification spec) {
-        InMemorySortOperatorDescriptor inMemorySortOp = null;
-        RecordDescriptor recordDescriptor = getHadoopRecordDescriptor(conf.getMapOutputKeyClass().getName(), conf
-                .getMapOutputValueClass().getName());
-        Class<? extends RawComparator> rawComparatorClass = null;
-        WritableComparator writableComparator = WritableComparator.get(conf.getMapOutputKeyClass().asSubclass(
-                WritableComparable.class));
-        WritableComparingBinaryComparatorFactory comparatorFactory = new WritableComparingBinaryComparatorFactory(
-                writableComparator.getClass());
-        inMemorySortOp = new InMemorySortOperatorDescriptor(spec, new int[] { 0 },
-                new IBinaryComparatorFactory[] { comparatorFactory }, recordDescriptor);
-        return inMemorySortOp;
-    }
+	public FileSystem getHDFSClient() {
+		FileSystem fileSystem = null;
+		try {
+			fileSystem = FileSystem.get(jobConf);
+		} catch (IOException ioe) {
+			ioe.printStackTrace();
+		}
+		return fileSystem;
+	}
 
-    public static ExternalSortOperatorDescriptor getExternalSorter(JobConf conf, JobSpecification spec) {
-        ExternalSortOperatorDescriptor externalSortOp = null;
-        RecordDescriptor recordDescriptor = getHadoopRecordDescriptor(conf.getMapOutputKeyClass().getName(), conf
-                .getMapOutputValueClass().getName());
-        Class<? extends RawComparator> rawComparatorClass = null;
-        WritableComparator writableComparator = WritableComparator.get(conf.getMapOutputKeyClass().asSubclass(
-                WritableComparable.class));
-        WritableComparingBinaryComparatorFactory comparatorFactory = new WritableComparingBinaryComparatorFactory(
-                writableComparator.getClass());
-        externalSortOp = new ExternalSortOperatorDescriptor(spec,conf.getInt(HYRACKS_EX_SORT_FRAME_LIMIT,DEFAULT_EX_SORT_FRAME_LIMIT),new int[] { 0 },
-                new IBinaryComparatorFactory[] { comparatorFactory }, recordDescriptor);
-        return externalSortOp;
-    }
-    
-    public static MToNPartitioningConnectorDescriptor getMtoNHashPartitioningConnector(JobConf conf,
-            JobSpecification spec) {
+	public JobSpecification getJobSpecification(List<JobConf> jobConfs)
+			throws Exception {
+		JobSpecification spec = null;
+		if (jobConfs.size() == 1) {
+			spec = getJobSpecification(jobConfs.get(0));
+		} else {
+			spec = getPipelinedSpec(jobConfs);
+		}
+		return spec;
+	}
 
-        Class mapOutputKeyClass = conf.getMapOutputKeyClass();
-        Class mapOutputValueClass = conf.getMapOutputValueClass();
+	private IOperatorDescriptor configureOutput(
+			IOperatorDescriptor previousOperator, JobConf conf,
+			JobSpecification spec) throws Exception {
+		int instanceCountPreviousOperator = operatorInstanceCount
+				.get(previousOperator.getOperatorId());
+		int numOutputters = conf.getNumReduceTasks() != 0 ? conf
+				.getNumReduceTasks() : instanceCountPreviousOperator;
+		HadoopWriteOperatorDescriptor writer = null;
+		writer = new HadoopWriteOperatorDescriptor(spec, conf, numOutputters);
+		configurePartitionCountConstraint(spec, writer, numOutputters);
+		spec.connect(new OneToOneConnectorDescriptor(spec), previousOperator,
+				0, writer, 0);
+		return writer;
+	}
 
-        MToNPartitioningConnectorDescriptor connectorDescriptor = null;
-        ITuplePartitionComputerFactory factory = null;
-        conf.getMapOutputKeyClass();
-        if (conf.getPartitionerClass() != null && !conf.getPartitionerClass().getName().startsWith("org.apache.hadoop")) {
-            Class<? extends Partitioner> partitioner = conf.getPartitionerClass();
-            factory = new HadoopPartitionerTuplePartitionComputerFactory(partitioner, DatatypeHelper
-                    .createSerializerDeserializer(mapOutputKeyClass), DatatypeHelper
-                    .createSerializerDeserializer(mapOutputValueClass));
-        } else {
-            RecordDescriptor recordDescriptor = DatatypeHelper.createKeyValueRecordDescriptor(mapOutputKeyClass,
-                    mapOutputValueClass);
-            ISerializerDeserializer mapOutputKeySerializerDerserializer = DatatypeHelper
-                    .createSerializerDeserializer(mapOutputKeyClass);
-            factory = new HadoopHashTuplePartitionComputerFactory(mapOutputKeySerializerDerserializer);
-        }
-        connectorDescriptor = new MToNPartitioningConnectorDescriptor(spec, factory);
-        return connectorDescriptor;
-    }
+	private int getInstanceCount(IOperatorDescriptor operator) {
+		return operatorInstanceCount.get(operator.getOperatorId());
+	}
+
+	private IOperatorDescriptor addCombiner(
+			IOperatorDescriptor previousOperator, JobConf jobConf,
+			JobSpecification spec) throws Exception {
+		boolean useCombiner = (jobConf.getCombinerClass() != null);
+		IOperatorDescriptor mapSideOutputOp = previousOperator;
+		if (useCombiner) {
+			System.out.println("Using Combiner:"
+					+ jobConf.getCombinerClass().getName());
+			IOperatorDescriptor mapSideCombineSortOp = getExternalSorter(
+					jobConf, spec);
+			configurePartitionCountConstraint(spec, mapSideCombineSortOp,
+					getInstanceCount(previousOperator));
+
+			HadoopReducerOperatorDescriptor mapSideCombineReduceOp = getReducer(
+					jobConf, spec, true);
+			configurePartitionCountConstraint(spec, mapSideCombineReduceOp,
+					getInstanceCount(previousOperator));
+			spec.connect(new OneToOneConnectorDescriptor(spec),
+					previousOperator, 0, mapSideCombineSortOp, 0);
+			spec.connect(new OneToOneConnectorDescriptor(spec),
+					mapSideCombineSortOp, 0, mapSideCombineReduceOp, 0);
+			mapSideOutputOp = mapSideCombineReduceOp;
+		}
+		return mapSideOutputOp;
+	}
+
+	private int getNumReduceTasks(JobConf jobConf) {
+		int numReduceTasks = Math.min(maxReducers, jobConf.getNumReduceTasks());
+		return numReduceTasks;
+	}
+
+	private IOperatorDescriptor addReducer(
+			IOperatorDescriptor previousOperator, JobConf jobConf,
+			JobSpecification spec) throws Exception {
+		IOperatorDescriptor mrOutputOperator = previousOperator;
+		if (jobConf.getNumReduceTasks() != 0) {
+			IOperatorDescriptor sorter = getExternalSorter(jobConf, spec);
+			HadoopReducerOperatorDescriptor reducer = getReducer(jobConf, spec,
+					false);
+			int numReduceTasks = getNumReduceTasks(jobConf);
+			configurePartitionCountConstraint(spec, sorter, numReduceTasks);
+			configurePartitionCountConstraint(spec, reducer, numReduceTasks);
+
+			IConnectorDescriptor mToNConnectorDescriptor = getMtoNHashPartitioningConnector(
+					jobConf, spec);
+			spec.connect(mToNConnectorDescriptor, previousOperator, 0, sorter,
+					0);
+			spec.connect(new OneToOneConnectorDescriptor(spec), sorter, 0,
+					reducer, 0);
+			mrOutputOperator = reducer;
+		}
+		return mrOutputOperator;
+	}
+
+	private long getInputSize(Object[] splits, JobConf conf)
+			throws IOException, InterruptedException {
+		long totalInputSize = 0;
+		if (conf.getUseNewMapper()) {
+			for (org.apache.hadoop.mapreduce.InputSplit split : (org.apache.hadoop.mapreduce.InputSplit[]) splits) {
+				totalInputSize += split.getLength();
+			}
+		} else {
+			for (InputSplit split : (InputSplit[]) splits) {
+				totalInputSize += split.getLength();
+			}
+		}
+		return totalInputSize;
+	}
+
+	private Object[] getInputSplits(JobConf conf, int desiredMaxMappers)
+			throws Exception {
+		Object[] splits = getInputSplits(conf);
+		if (splits.length > desiredMaxMappers) {
+			long totalInputSize = getInputSize(splits, conf);
+			long goalSize = (totalInputSize / desiredMaxMappers);
+			conf.setLong("mapred.min.split.size", goalSize);
+			conf.setNumMapTasks(desiredMaxMappers);
+			splits = getInputSplits(conf);
+		}
+		return splits;
+	}
+
+	public JobSpecification getPipelinedSpec(List<JobConf> jobConfs)
+			throws Exception {
+		JobSpecification spec = new JobSpecification();
+		Iterator<JobConf> iterator = jobConfs.iterator();
+		JobConf firstMR = iterator.next();
+		IOperatorDescriptor mrOutputOp = configureMapReduce(null, spec, firstMR);
+		while (iterator.hasNext())
+			for (JobConf currentJobConf : jobConfs) {
+				mrOutputOp = configureMapReduce(mrOutputOp, spec,
+						currentJobConf);
+			}
+		configureOutput(mrOutputOp, jobConfs.get(jobConfs.size() - 1), spec);
+		return spec;
+	}
+
+	public JobSpecification getJobSpecification(JobConf conf) throws Exception {
+		JobSpecification spec = new JobSpecification();
+		IOperatorDescriptor mrOutput = configureMapReduce(null, spec, conf);
+		IOperatorDescriptor printer = configureOutput(mrOutput, conf, spec);
+		spec.addRoot(printer);
+		System.out.println(spec);
+		return spec;
+	}
+
+	private IOperatorDescriptor configureMapReduce(
+			IOperatorDescriptor previousOuputOp, JobSpecification spec,
+			JobConf conf) throws Exception {
+		IOperatorDescriptor mapper = getMapper(conf, spec, previousOuputOp);
+		IOperatorDescriptor mapSideOutputOp = addCombiner(mapper, conf, spec);
+		IOperatorDescriptor reducer = addReducer(mapSideOutputOp, conf, spec);
+		return reducer;
+	}
+
+	public static InMemorySortOperatorDescriptor getInMemorySorter(
+			JobConf conf, JobSpecification spec) {
+		InMemorySortOperatorDescriptor inMemorySortOp = null;
+		RecordDescriptor recordDescriptor = getHadoopRecordDescriptor(conf
+				.getMapOutputKeyClass().getName(), conf
+				.getMapOutputValueClass().getName());
+		Class<? extends RawComparator> rawComparatorClass = null;
+		WritableComparator writableComparator = WritableComparator.get(conf
+				.getMapOutputKeyClass().asSubclass(WritableComparable.class));
+		WritableComparingBinaryComparatorFactory comparatorFactory = new WritableComparingBinaryComparatorFactory(
+				writableComparator.getClass());
+		inMemorySortOp = new InMemorySortOperatorDescriptor(spec,
+				new int[] { 0 },
+				new IBinaryComparatorFactory[] { comparatorFactory },
+				recordDescriptor);
+		return inMemorySortOp;
+	}
+
+	public static ExternalSortOperatorDescriptor getExternalSorter(
+			JobConf conf, JobSpecification spec) {
+		ExternalSortOperatorDescriptor externalSortOp = null;
+		RecordDescriptor recordDescriptor = getHadoopRecordDescriptor(conf
+				.getMapOutputKeyClass().getName(), conf
+				.getMapOutputValueClass().getName());
+		Class<? extends RawComparator> rawComparatorClass = null;
+		WritableComparator writableComparator = WritableComparator.get(conf
+				.getMapOutputKeyClass().asSubclass(WritableComparable.class));
+		WritableComparingBinaryComparatorFactory comparatorFactory = new WritableComparingBinaryComparatorFactory(
+				writableComparator.getClass());
+		externalSortOp = new ExternalSortOperatorDescriptor(spec, conf.getInt(
+				HYRACKS_EX_SORT_FRAME_LIMIT, DEFAULT_EX_SORT_FRAME_LIMIT),
+				new int[] { 0 },
+				new IBinaryComparatorFactory[] { comparatorFactory },
+				recordDescriptor);
+		return externalSortOp;
+	}
+
+	public static MToNPartitioningConnectorDescriptor getMtoNHashPartitioningConnector(
+			JobConf conf, JobSpecification spec) {
+
+		Class mapOutputKeyClass = conf.getMapOutputKeyClass();
+		Class mapOutputValueClass = conf.getMapOutputValueClass();
+
+		MToNPartitioningConnectorDescriptor connectorDescriptor = null;
+		ITuplePartitionComputerFactory factory = null;
+		conf.getMapOutputKeyClass();
+		if (conf.getPartitionerClass() != null
+				&& !conf.getPartitionerClass().getName().startsWith(
+						"org.apache.hadoop")) {
+			Class<? extends Partitioner> partitioner = conf
+					.getPartitionerClass();
+			factory = new HadoopPartitionerTuplePartitionComputerFactory(
+					partitioner, DatatypeHelper
+							.createSerializerDeserializer(mapOutputKeyClass),
+					DatatypeHelper
+							.createSerializerDeserializer(mapOutputValueClass));
+		} else {
+			RecordDescriptor recordDescriptor = DatatypeHelper
+					.createKeyValueRecordDescriptor(mapOutputKeyClass,
+							mapOutputValueClass);
+			ISerializerDeserializer mapOutputKeySerializerDerserializer = DatatypeHelper
+					.createSerializerDeserializer(mapOutputKeyClass);
+			factory = new HadoopHashTuplePartitionComputerFactory(
+					mapOutputKeySerializerDerserializer);
+		}
+		connectorDescriptor = new MToNPartitioningConnectorDescriptor(spec,
+				factory);
+		return connectorDescriptor;
+	}
 
 }
diff --git a/pom.xml b/pom.xml
index d8c1cd3..f38ccc8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,6 +51,16 @@
     </repository>
   </repositories>
 
+  <pluginRepositories>
+    <pluginRepository>
+      <id>hyracks-public</id>
+      <url>http://obelix.ics.uci.edu/nexus/content/groups/hyracks-public/</url>
+      <releases>
+        <updatePolicy>always</updatePolicy>
+      </releases>
+    </pluginRepository>
+  </pluginRepositories>
+
   <modules>
     <module>hyracks-api</module>
     <module>hyracks-dataflow-common</module>
