Spotting pattern for placement of compounds in an array

Information

  • Patent Application
  • 20040091941
  • Publication Number
    20040091941
  • Date Filed
    August 08, 2003
    21 years ago
  • Date Published
    May 13, 2004
    20 years ago
Abstract
A plurality of samples of different substances are tested for their ability to enhance or inhibit a biological process. The samples are deposited on a supporting surface, such as a ChemCard, in an array comprising at least two dots of each sample, wherein at least one of the dots of each sample is at least a predetermined distance from at least one of the dots of each of the plurality of samples. One or more assay reagents in a gel sheet, for example, are then brought in contact with the compounds and reactions with certain of the compounds are evident as the active compounds diffuse into the one or more assay reagents. The concept of having unique neighbors for each occurrence of a dot allows the definitive correlation of active compounds with the dot (and the compound) that caused the biological activity.
Description


BACKGROUND OF THE INVENTION

[0002] 1. Field of the Invention


[0003] The present invention relates to placement of compounds in an array such that absolute identification of specific compounds that exhibit biological activity is possible.


[0004] 2. Description of the Related Art


[0005] High Throughput Screening (HTS) is the process by which a very large number of substances can be simultaneously tested for biological reaction with an assay reagent. For example, one widely used HTS technique utilizes 96 well test plates that are approximately 8 cm×12 cm. Various compounds are placed in the wells and simultaneously tested for biological activity as an assay reagent is placed in each of the wells.


[0006] While the use of 96 well plates greatly improves the testing efficiency of large numbers of substances, there is a need for increased efficiency. As such, many firms in the industry are working towards decreasing the size of the wells on the plates so that an increased number of compounds may be simultaneously tested. For example, many assays now use 384 well plates. However, as the size of the wells further decreases, additional complexities are introduced in to the HTS process. For example, the manufacture of the wells in the plates becomes increasingly complex and expensive. In addition, the accurate dispensing of compounds into smaller wells and other fluid handling steps becomes more difficult and error prone.


[0007] Other researchers have increased the number of compounds on a plate by eliminating the use of wells altogether. For example, U.S. Pat. No. 5,976,813, entitled “CONTINUOUS FORMAT HIGH THROUGHPUT SCREENING,” discloses an assay format in which multiple spots of candidate materials (such as chemical compounds) are spotted onto a supporting layer, preferably in dry form, and are then transferred into a preferably porous assay matrix, such as a gel, a filter, a fibrous material, or the like, where an assay is performed. In the context of this type of assay, the supporting layer carrying an array of (preferably dried) assay materials is referred to by the name “ChemCard,” which is proprietary to Discovery Partners International, Inc. Such usage in this disclosure is simply for purposes of convenience, and is neither an indication that ChemCard is considered generic or descriptive, nor an indication that the invention is limited to any particular type of ChemCard available from Discovery Partners International, Inc. or similar cards from any other vendor. The use of ChemCards carrying large numbers of dried candidate compounds (for example), that are to be assayed for a particular desired activity, provides a convenient, rapid, and powerful format for high throughput assays.


[0008] Assays of this type, which occur in a preferably porous matrix or other material in which reactants can diffuse, can sometimes produce initially ambiguous results which will require some interpretation or translation to eliminate the ambiguity. Because the reactants are not held in discrete locations, a positive result can be in the form of a “spot” that has diffused out to a diameter greater than that of the original dot on the ChemCard. This spot can be of a diameter that encompasses the corresponding locations of multiple dots.


[0009] During the course of some assays, the compound travels from the original ChemCard into one or more preferably porous assay matrix layers (e.g. gel layers) or onto another surface. Although the compounds generally keep their relative x, y centers, they may diffuse radially, even non-symmetrically, becoming more dilute. The eventual spot created by the differential signal in the assay response to an “active” compound (hereafter referred to simply as “spot”) is on an image derived from a medium that is not the original ChemCard. Therefore, there can be a discrepancy between the relative position of the center of the active spot and the relative position in which the compound was originally placed (hereafter referred to as the compound “dot”). Unlike assays performed in wells, there is not necessarily a visual outline to indicate where each compound is centered. Thus, if no errors were introduced in the x and y coordinates during the assay process then identification of each compound responsible for a spot could be made. However, error is introduced at each step of the assay process making definitive identification of the compound that produced the spot increasingly difficult. For example, error may be introduced by the liquid handler that places the compounds on the ChemCards (whether robotic or human), the diffusion of the compound between ChemCards, gels and membranes, the flexibility (distortion) of gels, and the nonlinear aspects of image collection. Each of these factors contributes to an error that is equal to the distance between the center of an imaged spot and the intended center of the compound dot on the original ChemCard, herein referred to as the dot-spot error, or DSE. The intended center of the compound dot on the ChemCard (the “intended location” of the compound dot) is the location that the compound dot is to be placed on the ChemCard, which may be different than the center of the location that the compound dot is actually placed on the ChemCard (e.g. the “actual location” of the compound dot). In other words, due to errors introduced in the process of placing the compound dot on the ChemCard, such as those introduced by the liquid handler, for example, the intended location of the dot may be different than the actual location of the dot. In application, if the DSE is less than half of the pitch (e.g. distance) between compound dots then the active spots may be absolutely correlated with their respective dots and a ChemCard carrying only a single instance of each compound may allow accurate identification of the compounds corresponding to the active spots. However, if the DSE is greater than one half the pitch between compound dots, ambiguity in the determination of the active spot is present. As such, a more sophisticated method of placing compounds in an array so that the active spots may be accurately correlated with their respective dot is desired.



SUMMARY OF THE INVENTION

[0010] In one embodiment, the present invention comprises an array of n unique materials, each of which appears in the array at least two times and which has a plurality of neighboring materials, wherein for each of the n materials in the array, the neighboring materials in one occurrence of the material are different from the neighboring materials of all other occurrences of the material, wherein n is greater than 25. The materials may be considered neighboring materials of a particular material if they are within a predetermined radius around the particular material. The predetermined radius may be in the range of about 1 mm to 1 cm. The predetermined radius may be about 3mm. Alternatively, the materials may be considered neighboring materials of a particular material if they may be within a predetermined dot-pitch distance from the particular material. The predetermined dot-pitch distance may be 1 dot pitch. The predetermined dot-pitch may be between 1 and 5 dot pitch distances. The predetermined dot-pitch distance may be greater than 5 dot pitch distances. The value of n may be greater than 300, greater than 4000, or greater than 9000. The array may further be combined with a planar porous assay matrix, such that a surface of the porous assay matrix is in contact with each of the n materials of the array in such a manner that the materials can diffuse into the porous assay matrix. The porous assay matrix may contain at least one assay reagent capable of interacting with any of the materials in the array that is active in a test assay, wherein the test assay displays positive results (if any) within a time period t, during which time t the materials diffuse within the porous assay matrix to form a spot of diameter d, and wherein “neighboring materials” may be within a predetermined distance of the center of the spot. The array may further comprise a second porous assay matrix in contact with the porous assay matrix and containing at least one assay reagent capable of interacting with any of the materials in the array that is active in a test assay, wherein the test assay displays positive results (if any) within a time period t, during which time t the materials diffuse within the porous assay matrix and the second porous assay matrix to form a spot of diameter d on the second porous assay matrix and wherein “neighboring materials” may be within a predetermined distance of the center of the spot. The “neighboring materials” may include materials within a radius of about 3.5 mm.


[0011] In another embodiment, any number of porous assay matrices may be used in an assay process. For example, a porous gel matrix may initially be applied to the ChemCard. After sufficient diffusion of the compound dots, one or more porous, or non-porous, assay matrices may be temporarily contacted with the initial porous gel matrix.


[0012] In another embodiment, the present invention includes a method for creating an array of a plurality of materials, each material occurring at least twice within the array and having different neighboring materials in each occurrence. This method comprises (a) creating a candidate arrangement of materials containing n pairs of the materials in a spatial relationship, (b) testing whether a first occurrence and a second occurrence of each of the materials have different neighbors, (c) if the criteria of (b) is not satisfied, changing the spatial relationship of at least some of the n materials, and (d) repeating steps (b) and (c) until the criteria of (b) is satisfied. The candidate arrangement created in step (a) may comprise each of the plurality of materials such that when the criteria of (b) is satisfied, the array is complete. The candidate arrangement created in step (a) may comprise a portion of the plurality of materials, the method further comprising (e) expanding the candidate arrangement of materials by increasing n by a predetermined number, and (f) repeating steps (b)-(e) until a final candidate arrangement is created containing each of the plurality of materials. Changing the spatial relationship of at least some of the n the materials may comprise determining whether a placement of a nth material in every open location within the candidate arrangement fails to satisfy the criteria of (b), decrementing n if the nth material fails to satisfy the criteria of (b) in every open location within the candidate arrangement, and changing the spatial relationship of at least some of n the materials.


[0013] In another embodiment, a method of testing a plurality of samples of different substances for their ability to enhance or inhibit a biological process comprises depositing in an array at least two dots of each of the samples onto a planar matrix such that each of the at least two dots is centered at its own distinct site, wherein at least one of the at least two dots of each of the samples is at least a predetermined distance from at least one of the dots of each of the plurality of samples, transferring the array from the planar matrix into a uniformly dispersed assay reagent, and observing the interaction of each of the substances with the assay reagent and correlating the interaction with an ability of each of the substances to enhance or inhibit the biological process. The method may further comprise depositing in a second array at least two dots of each of the samples onto a second planar matrix such that each of the at least two dots is centered at its own distinct site, wherein at least one of the at least two dots of each of the samples is at least a predetermined distance from at least one of the dots of each of the plurality of samples, and a pattern of placement of the dots on the second array is different than a pattern of placement of the dots on the first array, placing the uniformly dispersed assay reagent on the second planar matrix, and observing the interaction of each of the substances with the assay reagent and correlating the interaction with an ability of each of the substances to enhance or inhibit the biological process. The method may further comprise placing a second uniformly dispersed assay reagent on the uniformly dispersed assay reagent, observing a second interaction of each of the substances with the second uniformly dispersed assay reagent, and correlating the second interaction with an ability of each of the substances to enhance or inhibit the biological process. The method may further comprise placing a third uniformly dispersed assay reagent on the second uniformly dispersed assay reagent, observing a third interaction of each of the substances with the third uniformly dispersed assay reagent, and correlating the third interaction with an ability of each of the substances to enhance or inhibit the biological process. The planar matrix may comprise a plurality of alignment dots configured to diffuse into the uniformly dispersed assay reagent, the second uniformly dispersed assay reagent, and the third uniformly dispersed assay reagent; the alignment dots on the third uniformly dispersed assay reagent providing reference points for the orientation of the third uniformly dispersed assay reagent with respect to the planar matrix.


[0014] In another embodiment, a method of testing a plurality of samples of different substances for their ability to enhance or inhibit a biological process comprises depositing in an array at least one dot of each of the samples onto a plurality of planar matrixes such that each of the at least one dot is centered at its own distinct site, wherein at least one of the dots of each of the samples is at least a predetermined distance from at least one of the dots of each of the plurality of samples, transferring the array of samples from the plurality of planar matrixes into a uniformly dispersed assay reagent, and observing the interaction of each of the substances with the assay reagent and correlating the interaction with an ability of each of the substances to enhance or inhibit the biological process.


[0015] In another embodiment, a system for testing the interaction of a plurality of samples of different compounds with an assay reagent comprises a relatively flat carrier configured to support the plurality of samples and a dispensing mechanism configured to dispense at least two dots of each of the plurality of samples of different compounds on the flat carrier such that each of the at least two dots of each of the plurality of samples has a different set of neighboring compounds within a predetermined distance. The system may further comprise a detection mechanism configured to detect interactions between each of the plurality of samples dispensed on the flat carrier and the assay reagent. The dispensing mechanism, may simultaneously dispense a portion of the plurality of samples, where the pipettes in the dispense mechanism are arranged in a particular relative orientation, on at least two locations on the flat container. None of the samples in the portion of the plurality of samples may be neighboring compounds. The portion of the plurality of samples may comprise twelve samples. The assay reagent may be uniformly dispersed in a gel sheet. The flat carrier may comprise a plurality of alignment dots configured to diffuse into the assay reagent and provide reference points for the orientation of the gel sheet with respect to the flat carrier.


[0016] Another embodiment comprises an array of samples in which each sample appears at least twice and there may be at least 768 dispenses of groups of 12 samples.


[0017] Another embodiment comprises an array of samples in which each sample appears at least twice and there may be at least 4608 samples, wherein the array comprises 144 columns and 64 rows and the samples may be arranged substantially according to the relative coordinates shown in Table 1.


[0018] In another embodiment, a method for performing an assay comprises providing a substantially planar substrate having an array of at least two dots of each of a plurality of test materials, wherein each of the dots has a plurality of neighboring test materials and is placed such that the neighboring materials in one occurrence of the material are different from the neighboring materials of all other occurrences of the material, and transferring the array of test materials into a uniformly-dispersed assay reagent that participates in indicating which of the test materials may be active in the assay while maintaining the relative positioning of the test materials vis-a-vis each other. Transferring the array of test materials may comprise contacting the array with the assay reagent and allowing the materials to diffuse into the assay reagent. Transferring the array may comprise transferring the materials into a first matrix, and then contacting the first matrix with the assay reagent. Transferring the array may comprise contacting the array with a gel into which the materials can diffuse.


[0019] These and other objects and features of the present invention will become more fully apparent from the following description and appended claims taken in conjunction with the following drawings, where like reference numbers indicate identical or functionally similar elements.







BRIEF DESCRIPTION OF THE DRAWINGS

[0020]
FIG. 1 is a perspective view of a ChemCard and a gel sheet.


[0021]
FIG. 2 is a perspective view of a gel sheet placed on a ChemCard.


[0022]
FIG. 3 is a top view of an image of spots transposed on a ChemCard having a plurality of compound dots placed thereon.


[0023]
FIG. 4 is a flow chart illustrating a method of placing pairs of compounds in an array so that the active dot may be accurately correlating with a resultant active spot.


[0024]
FIG. 5 is a flow chart illustrating one method of performing block 440 of FIG. 4.


[0025]
FIG. 6

a
, 6b, and 6c are diagrams representing a portion of an exemplary process of placing compounds in an array so that each occurrence of a particular compound has different neighbors.


[0026]
FIG. 7 is a flow chart illustrating a method of determining an array SA such that each of the compounds in each of the A dispense positions satisfy the neighbor constraints.


[0027]
FIG. 8 is a flowchart illustrating one method of performing the neighbor constraint checks for an exemplary compound M.


[0028]
FIG. 9 illustrates a portion of a placement array geographically arranged as the compounds would be placed on a ChemCard.







DETAILED DESCRIPTION

[0029] In the following description, reference is made to the accompanying drawings, which form a part hereof, and which show, by way of illustration, specific examples or processes in which the invention may be practiced. Where possible, the same reference numbers are used throughout the drawings to refer to the same or like components. In some instances, numerous specific details are set forth in order to provide a thorough understanding of the invention. The invention, however, may be practiced without the specific details or with certain alternative equivalent devices and/or components and methods to those described herein. In other instances, well-known methods and devices and/or components have not been described in detail so as not to unnecessarily obscure aspects of the invention.


[0030] In one embodiment, two compound dots are microarrayed for each compound to be tested in order to create a pair of active spots for each active compound. For each compound, the two dots are placed in positions on the same ChemCard such that each has a different set of neighbors within a known distance (a “neighbor distance”) that is greater than the DSE. Similarly, “neighbors” of a particular compound, as used herein, is defined as those compound within a “neighbor distance” of the center of the particular compound dot. In an advantageous embodiment, the neighbor distance is maximized by an algorithm such that the distance between one pair of every combination of compounds is maximized. In order to allow positive identification of the dot corresponding to an active spot the neighbor distance should be greater than the determined DSE (representative of the errors introduced in the assay process). In various embodiments, the neighbor distance may vary depending on the complexity of an assay process. For example, in a simple assay process, with a corresponding low DSE, the algorithm may quickly provide a pattern for placing the compound pairs on the ChemCard (e.g. the neighbor distance may be only slightly larger than the DSE). Likewise, in a multi-step assay, or otherwise error prone assay process, the DSE may be much larger and require an increasingly complex algorithm, or multiple iterations of an algorithm, in order to provide a pattern for placing the compound pairs on the ChemCard with a neighbor distance that is greater than the DSE. Thus, no compounds within the DSE of a particular dot will be within the DSE of the particular dot's counterpart dot. This concept of having unique neighbors for each occurrence of a dot allows the correlation of active spots with the dots (and the compounds) that caused the biological activity. While a system and method for placing pairs of compounds on a ChemCard is described in detail herein, one of skill in the art will recognize that the concepts described herein may be applied when additional occurrences of each compound are used. For example, in an embodiment that places four occurrences of each compound on a single ChemCard, the systems and methods described herein may be applied to ensure that each of the four occurrences of a specific compound have unique neighbors. In addition, one of skill in the art will recognize that a plurality of patterns that produce unique neighbors for each occurrence of a particular compound dot may be determined.


[0031] In one embodiment, ChemCards having the same or similar dimensions as typical welled microplates used for HTS are used in order to allow the use of existing detectors and plate handlers.


[0032]
FIG. 1 is a perspective view of a ChemCard 110 and a preferably porous assay matrix (e.g. a gel sheet 120). Throughout this description the term gel and gel sheet are used as one example of a porous assay matrix layer. It is contemplated that any other porous assay matrix layer may be used in place of any gel or gel sheet described herein, and a reference to a gel in this detailed description does not exclude the substitution of other types of assay matrices, which substitution is expressly contemplated. For example, a non-porous matrix, such as a non-porous hydrophilic sheet, may be used to carry reagents. These reagents may be attached, such as by a covalent bond, for example, or may be free to diffuse from the surface of the porous or non-porous sheet. A plurality of compound dots 130 are placed on a top surface 112 of the ChemCard 110 in an array. In one embodiment, rows and columns of dots 130 are placed on the ChemCard 110 in a honeycomb pattern, rather than a square array, to maximize the number of the compounds that may be placed on the ChemCard 110. In the illustration of FIG. 1, only a portion of the dots 130 are shown on the ChemCard 110. In operation, some or substantially all of the surface 112 of the ChemCard 110 may have dots 130 placed thereon. In one embodiment, dots 130 are not placed on certain portions of the ChemCard 110 in order to allow the placement of alignment dots (discussed below with reference to FIG. 3). In addition, dots 130 may not be placed on designated regions of the ChemCard so that the regions can be used for positive or negative assay controls.


[0033] In an advantageous embodiment, the top surface 112 of the ChemCard 110 is flat in order to allow the gel sheet 120 to come in complete contact with the compound dots 130 on the ChemCard. The direct and complete contact of each of the compound dots 130 is necessary for dissolution and transfer of the compounds from the top surface 112 into the gel sheet 120.


[0034] In one embodiment, the gel sheet 120 comprises a uniformly dispersed assay reagent in a substrate. The composition and method of manufacturing the gel sheet 120 is described in more detail in the co-pending application titled, “SYSTEMS AND METHODS FOR CASTING AND HANDLING ASSAY MATRICES,” application Ser. No. 10/219081, which is hereby incorporated by reference for all purposes.


[0035] In operation, after the compound dots 130 are placed on the ChemCard 110, the gel sheet 120 may be placed in direct contact with the ChemCard 110, or in direct contact with a medium into which the compound dots 130 have been transferred in registry from the ChemCard 110. As such, each of the compounds in the dots 130 is in direct contact with the assay reagent in the gel sheet 120. Those particular compounds that biologically react with the assay reagent in the gel sheet 120 typically diffuse, directly or indirectly, into the gel sheet 120 and create an identifiable diffusion spot on the gel sheet. In addition, cards or gel sheets comprising other assay reagents may be applied to the gel sheet 120 with the diffusion spots. In this way, a multi step assay may be performed on a set of compound dots 130 on a single ChemCard 110. However, as the number of steps in the assay process increases (e.g. additional assay reagents in gel sheets are applied), the correlation of the eventual active spots with the original dots becomes increasingly difficult.


[0036] In one embodiment, the compounds are transferred to the ChemCard 110 as solutions of compound in a solvent, such as dimethyl sulfoxide (DMSO). The amount of compound in each dot is determined based on the known concentration at which assays are typically run and the thickness of the gel sheet or sheets 120. In an advantageous embodiment, each of the dots comprises about 20 ng of compound. However, the amount of compound varies with the particular ChemCard and its intended assay system, and may be any suitable value.


[0037] The minimum volume of the DMSO solution may be determined by the maximum concentration of the compound that will dissolve in the DMSO solvent. If the concentration of a compound is too high, precipitation of the compound may occur. On the other hand, if the concentration of a compound is too low (and the volume of solution is not increased), the interaction between the compound and the assay reagent in the gel sheet may not be identifiable. In an advantageous embodiment, the concentration of compound in DMSO solvent is about 1 mg/mL. Thus, if each dot comprises about 20 ng of compound, the volume of the DMSO solution placed on the ChemCard in forming each dot 130 is about 20 nL (i.e. 20 ng/1 mg/mL=20 nL). In laboratory tests, 20 nL dots of solution occupy a diameter of less than about 1 mm, and typically fall within the range from about 0.6 to 0.7 mm. In addition, the radius of the dots 130 depends on the contact angle between the DMSO solution and the surface of the ChemCard, such that as the contact angle decreases, the dot 130 radius increases. One of skill in the art will recognize that dots of different sizes, having different concentrations of compounds, and using different solvents, may work equally as well in the present system. The placement of the compound dots 130 on the ChemCard 110 may also be performed in other manners, other than by creating a solution.


[0038] In one advantageous embodiment, the number of compound dots 130 on a single ChemCard 110 is 9216. Thus, if compounds are placed in duplicate on the ChemCard 110, 4608 different compound dot 130 pairs may be placed on each ChemCard.


[0039] The compounds awaiting placement on the ChemCard are typically stored in and robotically transferred from standard microwell plates, or microplates. In a system using 4608 pairs of compounds per ChemCard 110, multiples of standard sized microplates may be used to supply the compound solutions for spotting. For example, forty eight 96 well microplates, twelve 384 well microplates, or three 1,536 well microplates may store the necessary 4608 compounds. In addition, the efficiency of using a ChemCard carrying 9,216 compound dots may be improved by using a number of rows and columns that are multiples of standard microplate rows and columns. For example, in one embodiment, the ChemCard comprises 64 rows and 144 columns such that a number of standard microplate rows and columns may be used to fill the 64 rows and 144 columns. For example, the 64 rows may be evenly divided and filled by microplates with 8, 16, or 32 rows. Likewise, the 144 columns may be evenly divided and filled by microplates with 12, 24, or 48 columns.


[0040] In one embodiment, a dispensing mechanism dispenses a plurality of compounds simultaneously on the ChemCard 110. For example, the dispensing mechanism may comprise a plurality of pipettes for distribution of the compounds. The number of pipettes may vary greatly depending on the particular objectives of the dispensing (microarraying) process, and typically range from 1 to 96 pipettes. In one embodiment, the position of each of the plurality of pipettes are at fixed locations relative to one another, such that all of the plurality of pipettes move in parallel. In another embodiment, each of the pipettes moves independent of the others. In one embodiment, the range of movement of each pipette is exclusive, such that only a single pipette may dispense at each location on the ChemCard 110. The number of parallel pipettes used in a particular microarraying system may largely affect the neighbor distance that may be obtained. Specifically, in a system using a 96 pipette dispensing mechanism, the number of possible dispense locations on a ChemCard is less than the number of possible dispense locations a 12 pipette dispensing mechanism would have on the same ChemCard. Thus, the number of pipettes in the dispensing mechanism is directly related to the maximum neighbor distance that may be obtained.


[0041] In a typical compound dispensing system, each of the pipettes in the dispensing mechanism aspirates a compound from a microwell in a microplate, the dispensing mechanism is positioned over a predetermined location of the ChemCard, and the pipettes dispense the compound in a predetermined location. The pipettes may store enough of each compound so that multiple dispenses of the compound may occur without refilling the pipette from the microplate. Before loading the pipettes with different compounds, the pipettes should be thoroughly washed in order to ensure that each of the compounds placed by the pipettes are pure. The washing process typically requires a significant amount of time to perform. For example, in certain embodiment, the washing process requires more time to perform than the process of loading and aspirating each of the pipettes.


[0042] In one embodiment, all of the pipettes in a particular dispensing mechanism dispenses simultaneously. For example, in a 12 pipette dispensing mechanism, each of the pipettes may dispense (fire) simultaneously, depositing compounds from each of the 12 pipettes on the ChemCard. Likewise, a 96 pipette dispensing mechanism may simultaneously dispense each of the compounds in the 96 pipettes. In another embodiment, only a selected portion of the pipettes may be simultaneously dispensed. For example, in a system comprising a 96 pipette dispensing mechanism, the dispensing mechanism may simultaneously dispense only 12 of the 96 total pipettes. The 96 pipette dispensing mechanism may then move to another location over the ChemCard and dispense another 12 pipettes. In this particular example, the process may be repeated 8 times, aspirating 12 pipettes at each location, in order to dispense each of the 96 pipettes. Thus, the dispensing mechanism may dispense 8 different sets of 12 compounds, at multiple locations, without washing the pipettes. By reducing the number of wash cycles required (by having more pipettes operate in parallel, for example) to place a specific number of compounds on a ChemCard the time required to place the compounds on a ChemCard may be reduced. In addition, the dispensing of only a portion of the total pipettes in a dispense mechanism may allow a larger neighbor distance in the array. For example, if only 12 pipettes of a 96 pipette dispensing mechanism are dispensed at each location above the ChemCard, the neighbor distance may be equivalent to the neighbor distance in a system using a simultaneous aspirating 12 pipette dispensing mechanism.


[0043] If the dispensing mechanism simultaneously fires more than one pipette, the pitch between the pipettes may well need to be greater than the predetermined distance between neighbors for the particular assay process. Otherwise, each occurrence of the compound in a particular dispensing mechanism would have the same neighbors. In one exemplary embodiment, the dispensing mechanism comprises 12 pipettes, such that 12 compounds are simultaneously picked up from a microplate and simultaneously dispensed on the ChemCard. Each set of 12 compounds is dispensed on at least two different locations on the ChemCard before washing the pipettes and retrieving the next 12 compounds for placement. Subsequent dispenses of different compounds may be placed in the areas between the compounds placed previously. As such, compounds from different groups of dispenses may be neighbors, e.g. within a neighbor distance of one another. In one embodiment, an ink-jet type dispensing mechanism may be used to print the desired dots on the ChemCard 110. In another embodiment, a pin spotter may be used to apply the desired dots to the ChemCard 110.


[0044]
FIG. 2 is a perspective view of a gel sheet 120 placed on a ChemCard 110. As discussed above, the ChemCard 110 includes a plurality of compound dots to be assayed for a particular biological activity. For example, in one embodiment, the ChemCard 110 is covered with 9216 dots comprising pairs of 4608 different compounds. The dots can be transferred directly or indirectly into a substrate (such as a gel) in which assay results are read. As the compounds diffuse into the gel sheet 120, those compounds that biologically react with the assay reagent(s) in the gel sheet 120 form detectable spots 210. The spots 210 may then be identified by a detection mechanism, such as a human or (preferably) machine vision system which determines the dots 130 on the ChemCard 110 that produced the spots 210 (the “active dots”). However, as indicated in FIG. 2, the size of the spots 210 on the gel sheet 120 is substantially larger than the size of the dots 130 on the ChemCard (FIG. 1). As such, the definitive identification of the active dots becomes increasingly complex. Furthermore, during the course of an assay the compound may travel from the original ChemCard 110 into multiple gel layers 120 or onto other surfaces. In fact, the compounds may be transferred to any number of gel layers 120 in an assay process and any number of gel layers 120 carrying reagents may be applied to layers carrying the compounds. Also, any number of non-porous surfaces carrying reagents may be applied to a gel layer 120 in the assay process. The attachment of reagents to a non-porous surfaces, such as a solid surface, may be accomplished by dipping, or otherwise covering, the surface of the non-porous surface with a reagent solution. Alternatively, reagents may be attached to a non-porous surface chemically (such as by a covalent bond). Thus, the eventual spot 210 created by the differential signal in the assay response to an active compound dot 130a ( active dots 130a are those dots 130 that correspond to an active spot 210) is on a medium that is not the original ChemCard 110. Therefore, the identification of the absolute center of the spots 210 may not accurately identify the active dot 130a as there may be a discrepancy between the relative position of the center of the active spot 210 and the intended center of the compound dot 130 (FIG. 1) on the ChemCard 110.


[0045]
FIG. 3 is a top view of an image of spots (e.g. a photo of the final gel layer 120 used in the assay process) transposed on a ChemCard 110 having a plurality of compound dots 130 placed thereon. The image of spots 210a, 210b, and 210c may be captured from the most recently applied gel layer 120 in a multiple step assay process. For example, a first gel layer 120 may be placed on the ChemCard 110. The first gel layer 120 may have a first assay, or alternatively, may not have any assay reagents. The first gel layer 120 may be removed from the ChemCard 110 and placed on a second gel layer 120 (having different assay reagents than the first gel layer 120). The first and second gel layers may then be separated and a third gel layer placed in contact with the second gel layer. The image of spots 210 on the third gel layer may then be captured. The spots 210 are thus representative of the biological reactions between the compounds from dots 130 through the first gel layer, the second gel layer, and the third gel layer. It should be understood that in some instances, the actual compound may not itself be present in the spot that is imaged, but instead, the compound has acted as a catalyst or trigger for the creation of an imageable spot from other reagents.


[0046] Throughout each stage of the above described multiple stage assay process, a degree of error is introduced in the absolute locations of the spots 210 with respect to the intended and actual locations of their corresponding dots 130 on the ChemCard (e.g. cumulatively the DSE). As such, the center of the active dot 130a (e.g. the actual location) associated with each of the spots 210 may not lie in the absolute center of the spot 210. For example, in FIG. 3, the active dot 130a reacts with each of the gel layers in the assay process to create active spot 210a. However, through the errors introduced in the various steps of the assay process, the center of the active dot 130a is not in the absolute center of the spot 210a. As such, the identification of active dots (e.g. dot 130a) may not be positively identified by comparing the locations of the image including spots 210 to the original dot 130 locations on the ChemCard.


[0047] In one embodiment, alignment dots 320 are placed on the periphery of the ChemCard in order to ensure that the orientation and alignment of the final image containing spots 210 may be correlated with the original placement of the compound dots 130 for determination of the active dots 130a. In the embodiment of FIG. 3, the twenty-two alignment dots provide an asymmetric pattern in both mirror planes, even with the absence, obscuration, or addition of some spots developing in the alignment dot region. This asymmetry is desirable since during the assay process porous assay matrixes (such as gel sheets), membranes, and images can be flipped relative to the original ChemCard. In one embodiment, the alignment dots 320 are outside of the array where the compounds are placed to reduce interference with the assay of the compounds and, conversely, to reduce the effect of active spots on the alignment dots 320, as well as to make dot dispensing more efficient. The placement of the alignment dots outside the array of compounds may also advantageously increase the neighbor distance by providing a larger area for a multi-pipette dispensing mechanism to simultaneously dispense multiple compounds. In contrast, if the alignment dots are place in the middle of the array of compounds, the possible dispense locations for a simultaneous multi-pipette dispense is decreased.


[0048]
FIG. 4 is a flow chart illustrating a method of placing pairs of compounds in an array so that the active dot 130a may be accurately correlating with a resultant, active spot 210. FIG. 4 illustrates the concept of placing the pairs of compounds in an array such that each occurrence of a particular compound has different neighbors. The neighbor distance should be selected to include at least all of the compounds within the DSE for the particular assay. Accordingly, because the DSE depends on several aspects of the assay process, the number of neighbors for each compound may vary greatly depending on the particular assay method being used. In one embodiment, neighbors of a particular compound dot 130 include all dots 130 within a 3 mm radius. In other embodiments, the neighbors of a particular compound dot may include those dots within a smaller radius, e.g. 1 mm, 1.5 mm, 2 mm, or a larger radius, e.g. 4 mm, 6 mm, 1 cm. Those of skill in the art will recognize that the techniques disclosed herein are equally applicable to each of the above examples. Alternatively, the neighbors can include all those compounds within a given dot-pitch distance, such as those within a radius of 1 dot pitch, or 1.5, 2, 3, 4, 5, 8, or 10 dot pitch distances. Likewise, the neighbors may include an absolute number of neighboring dots. For example, in a system using a honeycomb pattern dot placement, the number of neighbors for any particular dot (excluding those dots on the edges of the card) may include the 6 immediately adjacent neighbors. In like manner, in a system using a honeycomb pattern dot placement, the number of neighbors may include two rings of surrounding dots, or 18 dots. One of skill in the art will recognize that an absolute number of neighboring dots may be extended to include any desired number of surrounding dots. Furthermore, in a system using any other pattern for dot placement (such as a grid pattern, for example) each of the above described methods for determining neighbors is equally applicable.


[0049] In block 410, a candidate array of pairs of n compounds is created. As mentioned above, in one embodiment, 4608 different compounds are placed on the ChemCard 110. Thus, in an embodiment using pairs of each compound, a total of 9216 dots will be placed on the ChemCard 110. In one embodiment, the candidate array comprises a matrix of X rows and Y columns, where X * Y=the total number of dots (e.g. 9216), where each coordinate of the assay contains a representation of one of the compounds (e.g. numbers 1-4608). As such, the array would contain two occurrences of each number 1-4608. In one embodiment, the candidate array begins with n=1, such that only a single pair of compounds are positioned in the array. However, it is contemplated that any number of compounds may be positioned in the array in block 410. In fact, in one embodiment all of the compounds that are to be placed in the array are assigned a random location in the array in block 410 such that the array is initially filled with two complete sets of the numbers from 1-4608.


[0050] In block 420, the neighbors of each occurrence of a compound are determined. In one embodiment, the neighbors of a particular compound include a predetermined number of compounds surrounding the particular compound in the X and Y directions in the candidate array. In another embodiment, neighbors of a particular compound include those compounds within a predetermined radius of the particular compound.


[0051] In decision block 430, the method determines whether a first occurrence and second occurrence of each compound have different neighbors (i.e. exclusively unique neighbors). This process is referred to herein as a constraint check, wherein the constraints are satisfied when the first occurrence and second occurrence of a compound pair have none of the same neighbors. For example, each occurrence of a particular compound may have 40 neighbors. Block 430 determines whether any of the 40 neighbors to the first occurrence are the same as any of the 40 neighbors to the second occurrence. If decision block 430 determines that there are occurrences of compounds in the array that have the same neighbors, the candidate array is changed in block 440. If the candidate array including pairs of compounds having the same neighbors is used in the assay process the active spots will not be definitively matched to a compound dot on the ChemCard.


[0052] In block 440, the spatial relationship (e.g. coordinates in the candidate array) of at least some of the materials in the array are changed. Many different methods of changing the spatial relationship of the array are possible in this block 440. For example, in one embodiment, the entire candidate array may be refilled in random order. In another embodiment, the locations of those pairs of compounds that are both neighbors to a particular compound may be changed. For example, if 100 pairs (200 dots) of neighbors are common to pairs of compounds, the locations of the 200 dots may be adjusted at random, shifted, or adjusted by an algorithm, leaving the remaining dots in their respective positions. In another embodiment, a genetic algorithm may be implemented to adjust the spatial arrangement of the compounds in the candidate array. See the discussion with reference to FIG. 5 for further detail on changing the spatial relationship of dots in the candidate array.


[0053] After the spatial relationship of the compounds in the candidate array has been adjusted (block 440), the method returns to block 420 which determines the neighbors of each occurrence of the compounds, and to block 430 which repeats the constraint check on the changed candidate array. The process of blocks 420, 430 and 440 continues until every pair of compounds passes the constraint check of block 430.


[0054] After the constraints of block 430 have been satisfied, block 450 determines whether all compounds that are to be placed in the candidate array have already been placed in the array. For example, in an embodiment using 4,608 different compounds, when n=4,608 all of the compounds have been placed in the array. Thus, in block 430, while n is less than the total number of compounds to be placed in the array (4,608 in one exemplary embodiment), the method moves to block 460. On the other hand, if all compounds have been placed in the array (e.g. n=the total number of compounds to be placed in the array), the method moves to block 470. Thus, in an embodiment that places all compounds in the candidate array prior to performing any constraint check (e.g. all compounds are placed in block 410), blocks 450 and 460 are not necessary because all n pairs of materials are always placed in the candidate array. Therefore, in such an embodiment, when the constraint check of block 430 is satisfied, the method continues directly to block 470.


[0055] In block 460, the candidate array is expanded by incrementing n, i.e. the number of pairs of compounds in the array. In one embodiment, the position of the additional compound pair(s) may be determined at random. In another embodiment, the additional compound pair(s) may be inserted in to those remaining locations in the candidate array that are furthest away from one another.


[0056] In block 470, the candidate array becomes the final array that will be used for placement of the compound dots 130 on the ChemCard 110 (See FIGS. 1 and 3, for example).


[0057]
FIG. 5 is a flow chart illustrating one method of performing block 440 of FIG. 4. When the process of FIG. 5 is implemented in the placement method of FIG. 4, the position of the compound pair that was most recently added to the candidate array is changed if there is a constraint violation in block 430. If the position of the compound pair that was most recently added to the candidate array cannot be changed to conform to satisfy the constraints in block 430, the position of the previously added compound pair (e.g. n−1) will be adjusted and location of acceptable positions for the most recently added pair of compounds (e.g. n) will again be attempted.


[0058] In decision block 510, if all possible locations in the candidate array for the nth pair of compounds, e.g. the most recently added pair of compounds, have been unsuccessfully tested against the constraints requirements of block 430, then block 530 decrements the value of n. Thus, block 530 performs a step back (or more than one step back) in the addition of new pairs of compounds to the candidate array in order to work around a constraint violation that could not be avoided through movement of the most recently added pair of compounds.


[0059] In block 520, the position of at least one of the nth pair of compounds in the candidate array is changed. If n has just been decremented in block 530, the nth pair of compounds has previously satisfied the constraints of block 430. However, the position of the nth pair in the candidate array is adjusted to another location that satisfies the constraints of block 430 in an attempt to change the spatial arrangement so that the now n+1 pair of compounds (i.e. the pair that failed the constraints test for every location in block 510) may be moved to a location that satisfies the constraints of block 430. One of skill in the art will recognize that the step back function of block 530 may step back multiple levels in the placement of compound pairs (e.g. n may be decremented multiple times) in order to change the spatial arrangement of the candidate array so that the previously constraint violating pair of compounds may satisfy the constraints of block 430.


[0060] After block 520 has changed the position of at least one of the nth pair of compounds, the method returns to block 420 which determines the neighbors of each occurrence of compounds, and to block 430 which performs the constraint check. The process of blocks 520, 420, 430, and 510 will continue until either (a) a position for the nth pair of compounds in the candidate arrangement that satisfies the constraints of block 430 is identified or (b) n is decremented by block 530 as a result of the inability to satisfy the constraints of block 430 by adjusting the position of the nth pair of compounds.


[0061]
FIG. 6

a
, 6b, and 6c are diagrams representing a portion of an exemplary process of placing compounds in an array so that each occurrence of a particular compound has different neighbors. FIG. 6a illustrates the position of compound pairs represented by the letters A, B, C, D, E, F, G, H, and I, in a portion of an array. As shown in FIG. 6, two occurrences of each compound are positioned in the array. For example, compound A is placed at locations 610 and 612. FIG. 6a also illustrates the range of neighbors that will be considered for constraints checks. In particular, the range of neighbors in FIG. 6 covers a radius of approximately 1.5 times the pitch of the compounds. However, as discussed above, the neighbor distance may vary depending on the particular assay process. For example, in one embodiment with compound dots placed in a honeycomb pattern on the ChemCard with a vertical pitch of about 1.125 mm, a horizontal pitch of about 1.5 mm, and a diagonal pitch of about 0.95 mm, an algorithm has determined an array of 4608 compound pairs that have unique neighbors within a neighbor distance of about 3.5 mm. Alternatively, the range of neighbors may include a certain number of surrounding compounds in each direction rather than being limited by an absolute distance.


[0062] In FIG. 6a, the range of neighbors for the occurrences of compound A at location 610 and 612 are indicated by circles 610n and 612n, respectively. Thus, neighbors of the occurrence of compound A at location 610 include compound G and neighbors of the occurrence of compound A at location 612 include compound I. Because each of the occurrences of compound A (i.e. at location 610 and 612) have different neighbors, the position of the pair of compound A dots satisfies the constraints, as described with reference to block 430 of FIG. 5.


[0063]
FIG. 6

b
illustrates the position of compound pairs represented by the letters A-I and, additionally, a candidate placement of compound J. As indicated in FIG. 6b, the pair of compound J dots are preliminarily placed at locations 620 and 622 within the candidate array, and the neighbors of the two occurrences include those compounds that are at least partially within the circles 620n and 622n, respectively. In particular, neighbors of the occurrence of compound J at location 620 include compound D and neighbors of the occurrence of compound J at location 622 include compounds D and F. Because each of the occurrences of compound J have a common neighbor, D, the position of the pair of compound J dots does not satisfy the placement constraints. If compound J were left in the position indicated in FIG. 6b, the reaction by either compound D or J in the assay process may create spots on the final gel sheet that are not definitively attributable to either compound D or J. Thus, the candidate arrangement of compounds shown in FIG. 6b should be adjusted.


[0064]
FIG. 6

c
illustrates the position of compound pairs represented by the letters A-J, wherein the position of compound J previously at location 620 (FIG. 6b) has been changed to a new location 630. The neighbors of compound J at location 630 include compound B and the neighbors of compound J at location 622 include compounds D and F. Thus, the movement of compound J from location 620 to 630 removes the duplicate neighbors from the occurrences of compound J. As such, the current candidate array satisfies the placement constraints and additional compounds, if any, may be added using a similar process.


[0065] In one embodiment, the ChemCard comprises columns on the leftmost and rightmost areas of the field of view-that are not microarrayed with either alignment dots or compounds. These regions are left for the blank during the microarraying process such that they can be used for assay controls by the end user. There are many different HTS assays that can be run on the same compounds, and many copies of each ChemCard can be made for the various assays that will be run on them. Each assay can have its own control compounds to verify and quantitate an active response to the assay (positive controls). One feature of this embodiment is that no array locations need to be sacrificed for negative controls, since background, defined as the lack of influence of compounds, exists throughout the image. In contrast, in a typical microplate assay, wells must be used for negative controls.


[0066] In one embodiment, an assay process uses a robotic dispensing mechanism to place the compounds on the ChemCard. For example, in an exemplary embodiment, the dispensing mechanism comprises 12 pipettes that dispense each compound twice on the ChemCard (creating two dots of each compound) so that each of the two dots has a different set of neighboring compounds. As discussed above, the number of simultaneous pipette dispenses at each location over the ChemCard may affect both the efficiency of the microarraying process (e.g. the number of washings may be decreased by firing only a portion of the pipettes at each location) and the neighbor distance (e.g. as the number of simultaneous pipette dispenses increases, the neighbor distance decreases).


[0067] In an assay using a ChemCard having 4608 unique compounds (and thus 9216 dots), the dispensing mechanism makes 768 (9216/12=768) dispenses on the ChemCard in order to place each of the 9216 dots. As such, the algorithm that determines the locations of the dots on the ChemCard must allow for the dispensing of all 12 pipettes at each location. Table 1 contains the relative positions of the 9216 dots, in X and Y coordinates ranging from (0,0) to (64,144), according to one advantageous embodiment. Specifically, the column labeled “DOT#” assigns a number from 1-9216 to each specific dot, “REP” is either 1 or 2 indicating the 1st and 2nd placement of a compound, “COL” identifies the horizontal position (X), and “ROW” identifies the vertical position (Y). Each pair of sequential odd and even numbers, beginning with DOT# 1, represent the two dots of a particular compound (e.g. REP 1 and REP 2). For example, DOT# 1 and 2 are the same compound, DOT# 75 and 76 are the same compound, and DOT# 4227 and 4228 are the same compound.


[0068] The dot positions indicated in Table 1 were formulated for use with compounds having a diameter of about 0.7 mm, a minimum dot-pitch of about 0.95 mm and using a neighbor distance of about 3.5 mm. As such, each of the compounds has a plurality of neighbors. The arrangement of the compounds in Table 1 was determined so that each occurrence of a particular compound (two occurrences of each compound are used in this example) has exclusively different neighbors. The arrangement of compounds in Table 1 is exemplary and represents only one of a plurality of possible patterns for compounds in a (64,144) array according to the present invention.


[0069] While the position of the dots shown in Table 1 was formulated so that a dispensing mechanism comprising 12 pipettes may dispense all 12 compounds at each dispensing mechanism location, one of skill in the art will recognize the dots may be placed in other manners. For example, the dots may be placed by a single pipette that makes 9216 separate dispenses on the ChemCard (e.g. 2 dispenses of each compounds). Alternatively, the agorithm may be modified to generate a pattern that may be used in a system using a sing mechanism comprising any number of pipettes, such as 2, 4, 6, 8, 10, 14, 20, 24, 96, for example.


[0070] In addition, if a particular assay process is a multi step process or is otherwise more prone to errors in the locations of the dots, the range of neighbors may be expanded to include additional dots. For example, neighbors may be defined as those dots within 5 mm of one another.
1TABLE 1DOT#REPCOLROW113752273931115642445149562859711276821649161510297911113961222841317361421415111421621203517185618213419123422021323521197622225423135422421443525146402624535271113332821141291584030257353111253332223413317040342693535113733362354137111438264391121040239404112344221844312410442514045135446230447136104826340491142502117551179435224785311342542129555191435625985712542582141559110343602718611140622103863133864244365113406622238671153868256369125407023438711273872268373111674211334751777762453977123678212534791897802573981135682213734831101784269398511193862731187111138827436891131390285119111233922863693114339429711951135396298369713713982731799111514100241210114913102285171031127141042161210516113106297171071139141082281210917314110211211111150112212043113185141142131211512350116213243117197141182251211913550120214443121146481222454312311134112421149125158481262574312711254112822349129170481302694313111374113223549133111121342612135112181362394813712312138218121391241814025148141135121422301214313618144263481451150146211713147179511482471614911350150212913151191511522591615312550154214113155110351156271161571148158210461591346160244111611134816222246163115461642561116512548166234461671274616826811169111141702113421711771517224547173123141742125421751891517625747177135141782137421791101151802694718111191118227319183111111184274441851131111862851918711231118828644189114311190297191911135111922984419313721194273251951115221962420197149211982852519911272220021620201161212022972520311392220422820205173222062120207111582082120512091852221021320211123582122132512131972221422520215135582162144512171465621824551219111349220211572211585622225751223112549224223572251705622626951227113749228235572291112023026202311122623223956233123202342182023512426236251562371352023823020239136262402635624111582422117212431795924424724245113582462129212471915924825924249125582502141212511103592522712425311562542105425513542562441925711356258222542591155426025619261125562622345426312754264268192651112226621135026717723268245552691232227021255027118923272257552731352227421375027511012327626955277111919278273272791111192802745228111311928228527283112319284286522851143192862972728711351928829852289137292902733329111153029224282931492929428533295112730296216282971612929829733299113930300228283011733030221283031116630421205930518530306213283071236630821325930919730310225283111356631221445931314664314245593151113573162116531715864318257593191125573202236532117064322269593231137573242356532511128326262832711234328239643291232833021828331124343322516433313528334230283351363433626364337116633821172933917967340247323411136634221292934319167344259323451256634621412934711036734827132349116435021062351136235224427353113643542226235511562356256273571256435823462359127623602682736111130362211358363177313642456336512330366212558367189313682576336913530370213758371110131372269633731119273742733537511112737627460377113127378285353791123273802866038111432738229735383113527384298603851943862842387178383882119238912143902204239119038392213123931334394232423951102383962143239718483982374399174640024735401196840224944031866404259354051108840626144071986408271354091744410212033411111624122383641318644142132334151128241625036417198441821443341911402420262364211511422297423179424243354251171142622174271199428255354291291143023374311319432267354331120364342764143514484362938437113236438288414391568440221384411144364422100414431688444233384451764446281644714039448211736449188445029364511523945221293645311004454210564551643945621413645713835458284459111838460212946115035462220446311303846422494651623546623244671142384682369469111424702776471110374722371473112624742896475122374762491477113824782101647913437480261148119124822850483178464842119104851211248622050487190464882131104891331249023250491110246492214310493184164942371249517414496247434971961649824912499186145002594350111081650226112503198145042714350517412506212041507111610508238445091861251021324151111281051225044513198125142144415151140105162624451715195182915519171752024343521117195222211552311917524255435251291952623315527131175282674352911204453027649531144165322946533113244534288495351561653622146537114444538210049539168165402334654117612542281145431404754421174454518812546293145471524754821294454911001255021051455116447552214144553138435542812555111846556212175571504355822012559113046560224175611624356223212563114246564236175651114105662771456711045568237956911261057028914571122455722499573113810574210114575134455762619577192057828585791785458021191858112120582220585831905458421311858513320586232585871102545882143185891842459023720591174225922475159319624594249205951862259625951597110824598261205991982260027151601174206022120496031116186042385260518620606213249607112818608250526091982061021444961111401861226252613152761429236151725616243516171172761822123619119256202555162112927622233236231312562426751625112052626276576271442462829546291132526302885763115624632221546331144526342100576351682463623354637176206382812263914055640211752641188206422932264315255644212952645110020646210522647164556482141526491385165028206511118546522122565315051654220206551130546562242565716251658232206591142546602362566111141866227722663110536642371766511261866628922667122536682491766911381867021012267113453672261176731928674286667517862676211926677121286782206667919062680213126681133286822326668311026268421432668518432686237286871743068824759689196326902492869118630692259596931108326942612869519830696271596971742869821205769911162670023860701186287022132577031128267042506070519828706214457707114026708262607091535710293171117337122435971311735714221317151193371625559717129357182333171913133720267597211120607222766572314432724296272511326072628865727156327282216272911446073021006573116832732233627331762873428130735140637362117607371882873829330739152637402129607411100287422105307431646374421416074513859746282874711186274821233749150597502202875111306275222433753162597542322875511426275623633757111426758277307591106176023725761112626762289307631226176424925765113826766210130767134617682612576911155770274177113738772282477311275774219417751493877629447771139577823141779161387802106478111153782244367831113397842787785112737862563678711253978829077891139379026836791113739792210277931109779423779514727962113387971121779821577991592800212538801113378022277803171280421373880511131806212018071114780821091809112518102132181111267812212118131137181421441815113878162133181717118182136819184782021102821119118222133682319678242122282513111826225368271108782821342829111537830273583113858322441833112737834285583515058362164183711393783829758391625840228418411113384224738431825844244408451125384625938471945848256408491137385027138511106585226840853177388542743855131085621122857189388582194385911510860212428611101388622314386312710864213628651115138662749867137468682821286911271387021949871149468722941287311391387423149875161468762106128771115118782444487911134788027815881112711882256448831125478842901588511391188626844887113747888210215889110915890231589114710892211346893112115894215158951591089621254689711331589822715899171109002137469011113990221209903111415904210999051125990621329907112615908212199091137991021449911113815912213399131719914214491518415916211010917119199182134491919615920212210921131199222254492311081592421341092511154592627313927138139282449929112745930285139311501393221649933113945934297139351621393622849937111311938247119391821394024448941112511942259119431941394425648945113711946271119471106139482684894917746950275195113189522112109531894695421951955115189562124109571101469582315195912718960213610961111521962275796313754964282209651127219662195796714954968294209691139219702315797116154972210620973111519974244529751113559762782397711271997825652979112555980290239811139199822685298311375598421022398511092398623239871471898821135498911212399021523991159189922125549931133239942272399517118996213754997111317998212017999111423100021091710011125171002213217100311262310042121171005113717100621441710071138231008213317100917271010215210111842310122110181013119271014213521015196231016212218101713127101822552101911082310202134181021111553102227321102313821102424571025112753102628521102715021102821657102911395310302972110311622110322285710331113191034247191035182211036244561037112519103825919103919421104025656104111371910422711910431106211044268561045177541046275910471326104821121810491895410502195910511152610522124181053110154105423159105512726105621361810571115291058276510591376210602822810611127291062219651063149621064294281065113929106623165106716162106821062810691115271070244601071111363107227831107311272710742566010751125631076290311077113927107826860107911376310802102311081110931108223311083147261084211362108511213110862153110871592610882125621089113331109022731109117126109221376210931113251094212025109511143110962109251097112525109821322510991126311100212125110111372511022144251103113831110421332511051735110621601107184311108211026110911935111021360111119631111221222611131313511142256011151108311116213426111711156111182732911191382911202465112111276111222852911231502911242166511251139611126297291127162291128228651129111327113024727113118229113224464113311252711342592711351942911362566411371137271138271271139110629114026864114117762114227671143133411442112261145189621146219671147115341148212426114911016211502316711511273411522136261153175411542110391155193711562773711571874115821223911591213711602893711611994116221343911631333711642101371165178401166273411671443511682237116919040117028541171156351172214371173110240117429741175168351176226371177183611782422117917437118028811811203611822542118318637118422081185132361186266211871983711882328118918311119021114119118239119221711931951111942123411951943911962137119711071111982135411991106391200225712011788120229431203137212042774012051908120622143120714921208289401209110281210233431211161212122101401213139341214211391215143361216277412171513412182233912191553612202894122116334122223539122316736122421014122511098122627561227148351228283371229112181230287612311603512322953712331133812342996123517235123621073712371271238241331239111935124028243124111471242253331243113135124429443124512671246265331247114335124821064312491751212502110471251194512522774512531871212542122471255121451256289451257199121258213447125913345126021014512611784812622731212631444312642245126519048126628512126715643126821445126911024812702971212711684312722264512731844127424210127517445127628161277120441278254101279186451280220161281132441282266101283198451284232161285183191286211112128718247128821151289195191290212312129119447129221315129311071912942135121295110647129622515129717816129829511299137101300277481301190161302221511303149101304289481305110216130623351130716110130821014813091394213102114713111434413122771213131514213142234713151554413162891213171634213182354713191674413202101121321110916132227514132314843132428345132511211613262871413271604313282954513291133161330299141331172431332210745133312151334241411335111943133628251133711415133825341133911314313402945113411261513422654113431143431344210651134517520134621105513471953134827753134918720135021225513511215313522895313531992013542134551355133531356210153135717856135827320135914451136022531361190561362285201363156511364214531365110256136629720136716851136822653136918521370242181371174531372282413731205213742541813751865313762202413771325213782661813791985313802322413811832713822111201383182551384212313851952713862123201387194551388213231389110727139021352013911106551392225231393178241394295913951371813962775613971902413982215913991491814002895614011102241402233591403161181404210156140513950140621155140714352140827720140915150141022355141115552141228920141316350141423555141516752141621012014171109241418275221419148511420283531421112124142228722142316051142429553142511332414262992214271725114282107531429122314302414914311119511432282591433114231434253491435113151143629459143712623143826549143911435114402106591441175281442211063144319611444277611445187281446212263144712161144828961144919928145021346314511336114522101611453178641454273281455144591456226114571906414582852814591565914602146114611102641462297281463168591464226611465186014662422614671746114682832146912060147025426147118661147222032147313260147426626147519861147623232147718335147821112814791826314802131148119535148221232814831946314842133114851107351486213528148711066314882253114891783214902967149113726149227764149319032149422167149514926149628964149711023214982336714991612615002101641501139581502211631503143601504277281505151581506223631507155601508289281509163581510235631511167601512210128151311093215142753015151485915162836115171121321518287301519160591520295611521113332152229930152317259152421076115251231152624157152711195915282826715291143115302535715311131591532294671533126311534265571535114359153621066715371125153828091539124215402844015411245154229291543114421544296401545136515462104915471264215482108401549146315502373315511463615522109615531583155424933155515836155621216155717031558261331559170361560213361561181111562273361563111211564248331565193111566285361567112411568260331569110511157029736157111361157227233157311391574283361575112415762117115771133915782953615791244158021291158112539158221073615831364158421411158511133715862109215871116815882107158911253715902121215911128815922227159311373715942133215951140815962347159717791598213715991261600294016011899160221337160311461604221401605110191606225371607126616082334016091737161023734161114437161228037161311937161424934161515637161629237161713137161826134161916837162021043716211485162227337162318138162424181625160516262853716271933816282538162917251630297371631110538163226581633112131634280171635125016362844816371241316382921716391145016402964816411361316422104171643126501644210848164514611164623741164714644164821091416491581116502494116511584416522121141653170111654261411655170441656213314165718119165827344165911129166024841166119319166228544166311249166426041166511051916662974416671136916682724116691147167028344167111212167221179167311347167429544167512412167621299167712547167821074416791361216802141916811113451682210910168311161616842101516851125451686212110168711281616882221516891137451690213310169111401616922341516931771716942145169512141696294816971891716982134516991141417002214817011101171702225451703126141704233481705174517062374217071444517082804517091194517102494217111564517122924517131314517142614217151684517162104451717148131718273451719181461720241161721160131722285451723193461724253161725172131726297451727110546172826516172911221173028025173112581732284561733124211734292251735114581736296561737136211738210425173912658174021085617411461917422374917431465217442109221745158191746249491747158521748212122174917019175026149175117052175221332217531812717542735217551112171756248491757193271758285521759112417176026049176111052717622975217631136171764272491765115517662835217671122017682117171769113551770295521771124201772212917177312555177421075217751362017762141171777111353177821091817791116241780210231781112553178221211817831128241784222231785113753178621331817871140241788234231789177251790215317911222179229561793189251794213531795114221796221561797110125179822553179912622180023356180117531802237501803144531804280531805119531806249501807156531808292531809131531810261501811168531812210453181314821181427353181518154181624124181716021181828553181919354182025324182117221182229753182311055418242652418251122918262803318271266182828464182912429183029233183111466183229664183313629183421043318351266618362108641837146271838237571839146601840210930184115827184224957184315860184421213018451702718462615718471706018482133301849181351850273601851111225185224857185319335185428560185511242518562605718571105351858297601859113625186027257186111631862283601863112281864211725186511363186629560186712428186821292518691256318702107601871136281872214125187311136118742109261875111632187621031187711256118782121261879112832188022231188111376118822133261883114032188423431188517733188621611887123018882964188918933189021361189111430189222164189311013318942256118951263018962336418971761189823758189914461190028061190111961190224958190315661190429261190513161190626158190716861190821046119091482919102736119111816219122413219131602919142856119151936219162533219171722919182976119191105621920265321921111101922210933192314533192421113519251231019262121331927157331928212335192913510193021333319311693319322135351933175401934215193514135193621163419371874019382135193915335194021283419411994019422255194316535194421403419451571946240819471744119482124119491177195025281951186411952224411953129719542648195519841195623641195718441195824633195914381960237361961196411962258331963155819642493619651108411966270331967167819682613619691238197021093419711112319722161973114381974212134197511243197621361977126381978213334197911363198022561981142361982283719831484019842373198515436198629571987160401988249319891663619902107719911724019922613199317719942110401995175101996210931997119719982122401999187102000212132001131720022134402003199102004213332005181102006273720071804320082115120091931020102857201119243201221271201311051020142977201511044320162139120171111820182109412019145412020211143202112318202221214120231574120242123432025135182026213341202716941202821354320291754820302113203114143203221164220331874820342131320351534320362128422037199482038225132039165432040214042204115152042240162043174492044212492045117152046252162047186492048224492049129152050264162051198492052236492053184492054246412055143162056237442057196492058258412059155162060249442061110849206227041206316716206426144206512462066210942206711121120682114206911446207021214220711124112072213142073126462074213342207511361120762251420771424420782831520791484820802371120811544420822951520831604820842491120851664420862107152087172482088261112089171520902110482091175182092210911209311915209421224820951871820962121112097131152098213448209919918210021331121011811821022731521031805121042115921051931821062851521071925121082127921091105182110297152111110451211221399211311126211421094921151454921162111512117123262118212149211915749212021235121211352621222133492123169492124213551212517556212621212127141512128211650212918756213021321213115351213221285021331995621342252121351655121362140502137152321382402421391745721402125721411172321422522421431865721442245721451292321462642421471985721482365721491845721502464921511432421522375221531965721542584921551552421562495221571108572158270492159167242160261522161125421622109502163111219216421222165114542166212150216711241921682132221691265421702133502171113619217222522217314252217428323217514856217623719217715452217829523217916056218024919218116652218221072321831725621842611921851723218621105621871752621882109192189119232190212256219118726219221211921931312321942134562195199262196213319219718126219827323219918059220021151722011932622022852322031925922042127172205110526220629723220711045922082139172209111342210210957221114557221221115922131233422142121572215157572216212359221713534221821335722191695722202135592221175642222212922231415922242116582225187642226213292227153592228212858222919964223022529223116559223221405822331531223424032223517465223621265223711731223825232223918665224022465224112931224226432224319865224423665224518465224624657224714332224823760224919665225025857225115532225224960225311086522542705722551673222562616022571262225821095822591112272260213022611146222622121582263112427226421330226512662226621335822671136272268225302269142602270283312271148642272237272273154602274295312275160642276249272277166602278210731227917264228026127228117312282211064228317534228421092722851193122862122642287187342288212127228913131229021346422911993422922133272293181342294273312295180672296211525229719334229828531229919267230021272523011105342302297312303110467230421392523051124223062782307111940230827338230912442231021982311113140231228538231313642231423182315114340231629738231711103723182104323191446232021153423211122372322222432323156623242127342325113437232623443232716862328213934232914682330213823311833923322467233315882334213382335195392336258723371708233822538233911073923402707234114536234223735234312102344211233234515736234624935234711410234821243323491693623502613523511261023522136332353154235427343235514662356276723571174235828543235915862360288723611294236229743236317062364210072365177362366211062367111582368242342369189362370212262371112782372254342373110136237421346237511398237626634237718143237821237237917482380211835238119343238222437238318682384213035238511054323862363723871988238821423523891119723902844323911821123922396239311317239429643239519411239625162397114372398210843239911061124002636240111250240227162403111948240427346240512450240621916240711314824082854624091365024102311624111143482412297462413111045241421051241514414241621154224171122452418222512419156142420212742242111344524222345124231681424242139422425146162426214624271834724282461524291581624302134624311954724322581524331701624342254624351107472436270152437145442438237432439121824402112412441157442442249432443114182444212441244516944244626143244712618244821364124491512245027351245114614245227615245311712245428551245515814245628815245712912245829751245917014246021001524611774424622110142463111516246424242246518944246621221424671127162468254422469110144247021341424711139162472266422473181512474212452475174162476211843247719351247822445247918616248021304324811105512482236452483198162484214243248511191524862845124871821924882391424891131152490296512491194192492251142493114315249421085124951106192496263142497112582498272424991119562500273542501124582502219242503113156250428554250513658250623124250711435625082975425091110532510210592511144222512211550251311225325142225925151562225162127502517113453251823459251916822252021395025211462425222154252318355252424623252515824252621354252719555252825823252917024253022554253111075525322702325331455225342375125351226253621124925371575225382495125391142625402124492541169522542261512543126262544213649254515202546273592547146222548276232549117202550285592551158222552288232553129202554297592555170222556210023255717752255821102225591115242560242502561189522562212222256311272425642545025651101522566213422256711392425682665025691815925702125325711742425722118512573193592574224532575186242576213051257711055925782365325791982425802142512581111923258228459258318227258423922258511312325862965925871942725882512225891143232590210859259111062725922632225931126625942732259511196425962736225971246625982193225991131642600285622601136662602231322603114364260429762260511106126062106726071443026082115582609112261261022267261115630261221275826131134612614234672615168302616213958261714632261821622619183632620246312621158322622213622623195632624258312625170322626225622627110763262827031262914560263023759263112342632211257263315760263424959263511434263621245726371696026382615926391263426402136572641152826422736726431463026442763126451172826462856726471583026482883126491292826502976726511703026522100312653177602654211030265511153226562425826571896026582122302659112732266025458266111016026622134302663113932266426658266518167266621261266717432266821185926691936726702246126711863226722130592673110567267423661267519832267621425926771119312678284672679182352680239302681113131268229667268319435268425130268511433126862108672687110635268826330268917862690235269117711269224262693190626942155269518911269625462697110262698227526991101112700266627011817270222402703111812704234270519372706214402707113012708215427091105727102264027111142127122274271317739271421093527151753827162415271718939271821213527191873827202535272111013927222133352723199382724265527251112362726283827271115727282114372729112436273022038273111277273221263727331136362734232382735113972736213837273717911273828182739183627402110362741191112742293827431956274421223627451103112746210582747110762748213436274911125275027982751141127522483927531124527542918275511611275626039275711365275821038275912811276027239276111154276221094276314582764273392765112742766212142767157827682853927691139427702133427711698277229739277311198277421240277511093627762785277711318277822440277911213627802905278111438278223640278311333627842102527851781427862313278717719278824214278919014279021513279118919279225414279311021427942271327951101192796266142797181152798224827991118928002312280119315280221448280311309280421512280511051528062264828071142928082271228091774728102109432811175462812241132813189472814212143281518746281625313281711014728182133432819199462820265132821111244282228462823111515282421144528251124442826220462827112715282821264528291136442830232462831113915283221384528331791928342811628351831428362110442837191192838293162839195142840212244284111031928422105162843110714284421344428451112132846279162847141928482484728491124132850291162851116192852260472853113613285421031628551281928562724728571115122858210912285914516286027347286111271228622121122863157162864285472865113912286621331228671691628682974728691119162870212482871110944287227813287311311628742244828751121442876290132877114316287823648287911334428802102132881178222882232128831772728842422228851902228862152128871892728882542228891102222890227212891110127289226622289318123289422562895111817289623202897193232898214562899113017290021520290111052329022265629031142172904227202905177552906210951290717554290824121290918955291021215129111875429122532129131101552914213351291519954291626521291711125229182854291911152329202114532921112452292222054292311272329242126532925113652292623254292711392329282138532929179272930281242931183222932211052293319127293429324293519522293621225229371103272938210524293911072229402134522941111221294227924294314272944248552945112421294629124294711627294826055294911362129502103242951128272952272552953111520295421092029551452429562735529571127202958212120295915724296028555296111392029622133202963169242964297552965111924296621256296711095229682782129691131242970224562971112152297229021297311432429742365629751133522976210221297717830297823292979177352980242302981190302982215292983189352984254302985110230298622729298711013529882663029891813129902264299111182529922328299319331299421464299511302529962152829971105312998226642999114225300022728300117763300221095930031756230042412930051896330062121593007187623008253293009110163301021335930111996230122652930131112603014286230151115313016211461301711246030182206230191127313020212661302111366030222326230231139313024213861302517935302628132302718330302821106030291913530302933230311953030322122603033110335303421053230351107303036213460303711122930382793230391435304024863304111242930422913230431163530442606330451136293046210332304712835304827263304911152830502109283051145323052273633053112728305421212830551573230562856330571139283058213328305916932306029763306111193230622126430631109603064278293065113132306622464306711216030682902930691143323070236643071113360307221022930731542307421830751342307621183730771174230782138307911542308021303730811294230822258308312742308421423730851753730862453430871119130882640308918737309025734309111311309221840309319937309426934309511431309623040309714036309828413099111383100273403101152363102220413103123383104285403105164363106232413107135383108297403109173831102114331111763112210937311318583114212633115119631162121373117197831182138331191316312021333731211775312227341312314313124273423125189531262854131271551312828542312911015313029741313116713132297423133147731342433731351115333136210939313715973138255373139112733314021213931411717314226737314311393331442133393145185314621211314711166314821113149120531502241131511128631522131131531325315423611315511406315622511315711165315821093831591105316023783161112853162212138316312253164249831651140531662133383167134531682618316915503170211631711350317221184531731175031742131631751155031762130453177129503178225163179127503180214245318117545318224542318311199318426483185187453186257423187113193188218483189199453190269423191114393192230483193140443194284931951114631962734831971524431982204931991234632002854832011644432022324932031354632042974832051731632062114113207171432082109453209185163210212611321111914321221214532131971632142138113215131143216213345321717713321827349321914393220273503221189133222285493223155932242855032251101133226297493227167932282975032291471532302434532311115413232210947323315915323425545323511274132362121473237171153238267453239113941324021334732411813324221219324311161432442119324512013324622419324711281432482131932491321332502361932511140143252225193253111613325421094632551101332562371632571128133258212146325912213326024916326111401332622133463263134133264261163265155832662124326713583268211853326911758327021324327111558327221305332731295832742252432751275832762142533277175533278245503279111917328026563281187533282257503283113117328421856328519953328626950328711431732882305632891405232902857329111154329227356329315252329422057329512354329628556329716452329823257329913554330029756330117324330221141933031722330421095333051852433062126193307119223308212153330919724331021381933111312233122133533313177213314273573315143173316273583317189213318285573319155173320285583321110121332229757332316717332429758332514723332624353332711154933282109553329159233330255533331112749333221215533331712333342675333351139493336213355333718213338212273339111622334021273341120213342224273343112822334421327334513221334623627334711402233482252733491116213350210954335111021335223724335311282133542121543355122213356249243357114021335821335433591342133602612433611566336221323363136633642118613365117663366213323367115663368213061336912966337022532337112766337221426133731756133742455833751119253376266433771876133782575833791131253380218643381199613382269583383114325338423064338514060338628653387111623388273643389152603390220653391123623392285643393164603394232653395135623396297643397173323398211427339917303400210961340118532340221262734031193034042121613405197323406213827340713130340821336134091772934102736534111432534122736634131892934142856534151552534162856634171101293418297653419167253420297663421147313422243613423111557342421096334251593134262556134271127573428212163342917131343026761343111395734322133633433182934342123534351116303436213534371202934382243534391128303440213353441132293442236353443114030344422535344511162934462109623447110293448237323449112829345021216234511222934522493234531140293454213362345513429345626132345714623458296345913937346021934611582346222163463151373464213934651702346623363467163373468225934691474034702109534711373934722376347315940347421215347514939347624963477171403478213353479161393480261634811796348221203434831112373484214134851916348621323434871124373488213413489110363490214434349111363734922254134931834034942373734951815349621177349719540349824937349919353500212973501110740350226137350311055350421417350511188350626433507137403508214335091130835102184335111494035122134335131142835142304335151614035162254335171754335182110351911094035202443935211874335222131035231121403524256393525199433526225103527113340352826839352911113335302377353112393532224353311233335342497353511439353621443537113533353826173539126393540226435411745354227310354313938354424713545186535462851035471513835482591354919853550297103551163383552271135531461035542914355513945355621173557158103558221143559151453560213173561170103562233143563163453564225173565147483566210913356713747356823714356915948357021211335711494735722491435731714835742133133575161473576261143577179143578212042357911124535802149358119114358221324235831124453584213493585110314358621444235871136453588225493589183483590237453591181133592211715359319548359424945359519313359621291535971107483598261453599110513360021411536011118163602265136031374836042151360511301636062185136071494836082135136091142163610230513611161483612225513613175513614211836151109483616244473617187513618213183619112148362025647362119951362222518362311334836242684736251111413626237153627124736282212362911234136302491536311144736322141236331135413634261153635126473636226123637174133638273183639139463640247936411861336422851836431514636442599364519813364629718364716346364827193649146183650292236511395336522125365315818365422122365515153365621325365717018365823322365916353366022525366114756366221092136631375536642372236651595636662121213667149553668249223669171563670213321367116155367226122367317922367421205036751112533676215736771912236782132503679112453368021357368111032236822144503683113653368422557368518356368623753368718121368821172336891955636902495336911932136922129233693110756369426153369511052136962141233697111824369826593699137563700215937011130243702218593703149563704213593705114224370623059370716156370822559370917559371021263711110956371224455371318759371421326371511215637162565537171995937182252637191133563720268553721111149372223723372312553724222037251123493726249233727114553728214203729113549373026123373112655373222620373317421373427326373513954373624717373718621373828526373915154374025917374119821374229726374316354374427117374514626374629303747139613748213337491582637502213037511516137522133337531702637542333037551636137562253337571476437582109293759137633760237303761159643762212129376314963376424930376517164376621332937671616337682613037691793037702120583771111261377221653773191303774213258377511246137762136537771103303778214458377911366137802256537811836437822376137831812937842117313785195643786249613787193293788212931378911076437902616137911105293792214131379311183237942667379513764379621673797113032379821867379914964380021367380111423238022306738031616438042256738051756738062134380711096438082446338091876738102133438111121643812256633813199673814225343815113364381626863381711115738182373138191263382022283821112357382224931382311463382421428382511355738262613138271266338282262838291742938302733438311396238322472538331862938342853438351516238362592538371982938382973438391636238402712538411117838422819384318210384423833384511298384629393847194103848250333849114183850210593851110610385226233385311187385427938385511153838562437385711307385829138385911273838602557386111427386221033838631139383864267738651801138662463738671401386827811386919211387025837387115213872290113873110411387427037387516413876210211387717473878238138791423838802824238811867388225013883154383884294423885198738862621388716638388821064238891384389021103389114140389222838931504389421223389515340389621483897162438982134338991654039002268390115539022636390317439042436390511753906218363907119439082556390912953910230363911131439122676391311105391421103539151771039162383739171122539182122353919189103920250373921113453922213435392311011039242623739251794039262936392716373928211737392919140393022136393111837393221293739331103403934233363935130373936214137393711171639382811739391821839402384139411129163942293173943194183944250413945114116394621051739471106183948262413949111815395027946395111154639522431539531130153954291463955112746395625515395711421539582103463959113946396026715396118019396224645396314093964278193965192193966258453967152939682901939691104193970270453971164939722102193973174153974238939751424639762825039771861539782509397915446398029450398119815398226293983166463984210650398513812398621101139871414839882216398915012399021221139911534839922141639931621239942134113995165483996226163997151339982644399917124000243144001117134002218444003119124004255144005129134006230444007131124008267144009111013401021104340111771840122384540131122134014212243401518918401625045401711341340182134434019110118402026245402117948402229444023164540242117454025191484026221444027118454028212945402911034840302334440311304540322141454033111724403428125403518226403623849403711292440382932540391942640402504940411141244042210525404311062640442624940451118234046279544047111554404824323404911302340502915440511127544052255234053114223405421035440551139544056267234057180274058246534059140174060278274061192274062258534063152174064290274065110427406627053406716417406821022740691742340702381740711425440722825840731862340742501740751545440762945840771982340782621740791665440802106584081138204082211019408314156408422244085150204086212219408715356408821424408916220409021341940911655640922262440931521409426524095172040962432240971172140982185240991192041002552241011292141022305241031312041042672241051110214106211051410717726410823853410911222141102122514111189264112250534113113421411421345141151101264116262534117179564118295241191653412021175341211915641222215241231185341242129534125110356412623352412713053412821415341291117324130281334131182344132238574133112932413429333413519434413625057413711413241382105334139110634414026257414111183141422796241431115624144243314145113031414629162414711276241482553141491142314150210362415111396241522673141531803541542466141551402541562783541571923541582586141591522541602903541611104354162270614163164254164210235416517431416623825416714262416828266416918631417025025417115462417229466417319831417426225417516662417621066641771382841782110274179141644180223241811502841822122274183153644184214324185162284186213427418716564418822632418915294190266041911728419224330419311729419421860419511928419625530419712929419823060419913128420026730420111102942022110594203177344204238614205112229420621225942071893442082506142091134294210213459421111013442122626142131796442142960421516614216211761421719164421822160421911861422021296142211103644222233604223130614224214161422511184422623834227125422821103342291130442302503423111454232212233423311424423426234235126542362134334237140334238211014239111834240281142411523342422122142431130342442201142451643342462134142471142342482321142491382425022364251111034425223834425315024254214364255112234425625034425716224258226364259113434426026234426118438426221103842631439426427438426519638426621223842671163942682863842691108384270213438427112839427229838427317384274211044275111340427628241427711938427821224427911254042802944142811313842822134442831137404284210641428516114286280442871114354288283434289118114290292442911126354292295434293130114294210444295113835429621074342971440429823840429911154043002434043011164043022504043031127404304255404305128404306262404307113940430826740430917694310274394311140404312244334313188943142863943151524043162563343171100943182983943191644043202683343211118124322238114323121343242110414325113012432625011432711413432821224143291142124330262114331126134332213441433314041433421109433511181143362819433715241433821229433911301143402201943411644143422134943431142114344232194345138104346224443471110424348238424349150104350214444351112242435225042435316210435422644435511344243562624243571844643582110464359144743602744643611964643622122464363116474364286464365110846436621344643671284743682984643691746437021101243711113484372282494373119464374212212437511254843762944943771314643782134124379113748438021064943811619438228012438311144343842835143851181943862921243871126434388295514389130194390210412439111384343922107514393144843942384843951115484396243484397116484398250484399112748440025548440112848440226248440311394844042674844051761744062744744071404844082444144091881744102864744111524844122564144131100174414298474415164484416268414417111820441823819441912214420211049442111302044222501944231142144242122494425114220442626219442712621442821344944291404944302110174431111819443228274433152494434212217443511301944362202744371644944382134174439114219444023227444113818444222524443111050444423850444515018444621452444711225044482505044491621844502265244511134504452262504453184544454211054445514554456274544457196544458212254445911655446028654446111085444622134544463128554464298544465175444662110204467111356446828257446911954447021222044711125564472294574473131544474213420447511375644762106574477162744782802044791114514480283594481118274482292204483112651448429559448513027448621042044871138514488210759448914564490238564491111556449224356449311656449425056449511275644962555644971285644982625644991139564500267564501176254502274554503140564504244494505188254506286554507152564508256494509110025451029855451116456451226849451311182845142382745151229451621105745171130284518250274519114294520212257452111422845222622745231262945242134574525140574526211025452711182745282835452915257453021222545311130274532220354533164574534213425453511422745362323545371382645382260453911105845402385845411502645422146045431122584544250584545162264546226604547113458454826258454918462455021106245511463455227462455319662455421226245551166345562866245571108624558213462455912863456029862456117624562211028456311136445642826545651196245662122284567112564456829465456913162457021342845711137644572210665457316354574280284575111459457628367457711835457829228457911265945802956745811303545822104284583113859458421076745851464458623864458711156445882436445891166445902506445911127644592255644593128644594262644595113964459626764459717633459827463459914064460024457460118833460228663460315264460425657460511003346062986346071646446082685746091383846102744046111538461222414613150384614286404615117384616214414617162384618298404619129384620226414621173946222755462317541462423874625119394626287546271874146282507462913139463029954631199414632262746331433446342118394635112064636274104637155344638213039463911326464028610464116734464221423946431144646442981046451442464622946471110746482101146491562465021494651112274652222114653168246542269465511347465623411465718074658238846591113364660239146611927466225084663112536466425114665110474666262846671137364668263146691804046702741146711443467221111467319240467428611467511643467621231467711044046782981146791284346802135146811834468221042468314384684241384685195446862224246871163846882533846891107446902344246911283846922653846931840469421108469517536469623364697120404698212284699187364700215364701132404702213484703199364704227364705138464706274484707154647082249470915046471028648471111746471221449471316246471429848471512946471622649471717474718275134719175494720238154721119474722287134723187494724250154725131474726299134727199494728262154729143424730211847473111201447322741847331554247342130474735113214473628618473716742473821424747391144144740298184741144104742221747431110154744210194745156104746214174747112215474822219474916810475022617475111341547522341947531801547542381647551113444756239947571921547582501647591125444760251947611104154762262164763113744476426394765180484766274194767145147682111947691924847702861947711165147722123947731104484774298194775128514776213594777183124778210504779144647802414647811951247822225047831164647842534647851107124786234504787128464788265464789184847902110164791175444792234447931204847942122164795187444796215444797132484798213416479919944480022744480113854480227456480315544804225748051505448062865648071175448082145748091625448102985648111295448122265748131755481427521481517557481623823481711955481828721481918757482025023482113155482229921482319957482426223482514350482621185548271120224828274264829155504830213055483111322248322862648331675048342142554835114422483629826483714418483822254839111023484021027484115618484221425484311222348442222748451681848462262548471134234848234274849180234850238244851111352485223917485319223485425024485511255248562511748571104234858262244859113752486026317486118056486227427486314594864211117486519256486628627486711659486821231748691104564870298274871128594872213517487318320487421058487514544876241544877195204878222584879116544880253544881110720488223458488312854488426554488518564886211024488717552488823524889120564890212224489118752489221552489313256489421342448951995248962275248971386248982746448991562490022654901150624902286644903117624904214654905162624906298644907129624908226654909176349102752949111756549122383149131196349142872949151876549162503149171316349182992949191996549202623149211435849222118634923112030492427434492515558492621306349271132304928286344929167584930214263493111443049322983449331442649342233493511103149362103549371562649382143349391122314940222354941168264942226334943113431494423435494518031494623832494711136049482392549491923149502503249511125604952251254953110431495426232495511376049562632549571806449582743549591467496021112549611926449622863549631166749642123254965110464496629835496712867496821352549691832849702106649711462497224162497319528497422266497511662497625362497711072849782346649791286249802656249811864498221103249831756049842360498512064498621223249871876049882156049891326449902134324991199604992227604993111433499428238499514654996238394997112633499829438499915855000250395001113833500221063850031705500426239500519415006238650071865008211415009121415010250650111206501221261501313341501426265015132650162138150171441501827495019145750202744250211561502228695023157750242864250251681502629895027169750282984250291761050302114650311211503223405033188105034212665035114115036215405037110010503821386503912611504022740504114538504222435043184450442393350451573850462144350471964504825133504916938505022643505111084505226333505316850542119550551814250562392505711885058213155059193425060251250611308506221435506311054250642632506513945066274435067112385068239395069151450702864350711243850722513950731634507429843507513638507626339507715375078211733507911113450802111250811173750822129335083112334508421232508512937508621413350871135345088213525089111441509028246509114613509223847509311264150942944650951581350962504750971138415098210646509917013510026247510119495102238145103181451042114951051214951062501451071201451082126951091334951102621451111321451122138951131449511427417511514515511627450511715695118286175119157155120286505121168951222981751231691551242985051251761851262114145127121951282348512918818513021261451311141951322154851331100185134213814513512619513622748513714546513822515139184125140239415141157465142214515143196125144251415145169465146226515147110812514826341514916165150211913515118150515223910515311816515421311351551935051562511051571301651582143135159110550516026310516113912516227451516311246516423947516515112516628651516712446516825147516916312517029851517113646517226347517315455174211741517511114251762111105177117455178212941517911234251802123105181129455182214141518311354251842135105185111449518628254518714621518823855518911264951902945451911582151922505551931138495194210654519517021519626255519719575198238225199182252002114175201121575202250225203120225204212617520513357520626222520713222520821381752091441752102742552111452352122745852131561752142862552151572352162865852171681752182982552191692352202985852211762652222114225223122752242356522518826522621262252271142752282155652291100265230213822523112627523222756523314554523422595235184205236239495237157545238214595239196205240251495241169545242226595243110820524426349524516245246211921524718158524823918524911824525021312152511935852522511852531302452542143215255110558525626318525713920525827459525911254526023955526115120526228659526312454526425155526516320526629859526713654526826355526915535270211749527111115052722111185273117535274212949527511235052762123185277129535278214149527911355052802135185281111457528228262528314629528423863528511265752862946252871582952882506352891138575290210662529117029529226263529319655294238305295183052962114255297121655298250305299120305300212625530113365530226230530313230530421382553051442553062743353071453153082746653091562553102863353111573153122866653131682553142983353151693153162986653171763453182114305319123553202364532118834532221263053231143553242156453251100345326213830532712635532822764532914562533022675331184285332239575333157625334214675335196285336251575337169625338226675339110828534026357534116325342211929534318166534423926534511832534621312953471936653482512653491303253502143295351110566535226326535313928535427467535511262535623963535715128535828667535912462536025163536116328536229867536313662536426363536515615366211757536711115853682111265369117615370212957537111235853722123265373129615374214157537511355853762135265377142353782642537917575380210853811543538221842538318775384222853851663538623042538719975388234853891827539023375391133953922117653931947539421537539511539539621296539711067539822737539912739540021416540115954022116385403180425404239365405117954062128385407192425408251365409129954102140385411110442541226336541313654142393541517365416283954171156541825135419119365420220395421127654222633542313136542423239542514838542621133554271116154282111385429160385430212535543111281543221233854331723854342137355435114015436213538543719854382846543914235544023975441121854422966544315435544425175445133854462108654471663554482637544918310545027638545111045452278425453195105454288385455122454562904254571107105458210038545913445460210242546111204546221115546311117546421172546511324546621235546711237546821292546911444547021355547111357547221412547314211547426505475175155476210165477154115478218505479187155480222165481166115482230505483199155484234165485182155486234554871347548821171454891941554902154554911154754922129145493110615549422745549512747549621411454971517549821164654991805055002394455011171755022128465503192505504251445505129175506214046550711045055082634455091314551023911551117445512284755131151455142511155151194455162204755171271455182631155191314455202324755211484655222113435523111695524211146552516046552621254355271128955282123465529172465530213743553111409553221354655331916553428414553514243553623915553712116553829614553915443554025115554113316554221081455431664355442631555451831855462764655471101255482785055491951855502884655511221255522905055531107185554210046555513412555621025055571120125558211113555911111555602117105561113212556221231355631123155564212910556511441255662135135567113515556821411055691421955702658557117523557221024557315419557421858557518723557622224557716619557823058557919923558023424558118223558223535583135555842117225585194235586215535587115555588212922558911062355902275355911275555922141225593152555942116545595180585596239525597117255598212854559919258560025152560112925560221405456031104585604263525605132256062391956071752560828555609115225610251195611119525612220555613127225614263195615131525616232555617148545618211351561911161756202111545621160545622212551562311281756242123545625172545626213751562711401756282135545629192456302842256311425156322392356331212456342962256351545156362512356371332456382108225639166515640263235641183265642276545643110205644278585645195265646288545647122205648290585649110726565021005456511342056522102585653112020565421112156551111235656211718565711322056582123215659112323566021291856611144205662213521566311352356642141185665142275666266656671753156682103256691542756702186656711873156722223256731662756742306656751993156762343256771823156782361567913635680211730568119431568221561568311563568421293056851106315686227615687127635688214130568915335690211662569118066569223960569311733569421286256951926656962516056971293356982140625699110466570026360570113305702239275703176057042863570511530570625127570711960570822063570912730571026327571113160571223263571314862571421135957151116255716211162571716062571821255957191128255720212362572117262572221375957231140255724213562572519325726284305727142595728239315729121325730296305731154595732251315733133325734210830573516659573626331573718334573827662573911028574027866574119534574228862574312228574429066574511073457462100625747134285748210266574911202857502111295751111131575221172657531132285754212329575511233157562129265757114428575821352957591135315760214126576111207576224738576317937576427539576511327576625938576719137576828739576911447577027138577111033757722993957731510577428038577517585776211136577711710577829238577918785780212336578112910578221043857831998578421353657851486578623935578714834578823857891606579025135579116034579221585793172657942633557951723457962278579714755798211939579911143658002395580115955802213139580311263658042515580517155806214339580711383658082635580913958102111375811148358122754258131159581421233758151603581628742581712795818213537581917235820299425821134158222759582314365824211139582511541582628795827116365828212339582912741583029995831128365832213539583317743583421202583511185583621148583718943583821322583911305584021268584111014358422144258431142558442138858451127584621116584717995848231158491247585021236585119195852215115853136758542135658551103958562271158571120155858247465859179455860275475861113215586225946586319145586428747586511441558662714658671103455868299475869151858702804658711751658722111445873117185874292465875187165876212344587712918587821044658791991658802135445881148145882239435883148425884231658851601458862514358871604258882151658891721458902634358911724258922271658931471358942119475895111444589623913589715913589821314758991126445900251135901171135902214347590311384459042631359051317590621114559071481159082755059091151759102123455911160115912287505913127175914213545591517211591629950591713495918275175919144459202111475921115495922287175923116445924212347592512749592629917592712844592821354759291775159302120105931111813593221141659331895159342132105935113013593621261659371101515938214410593911421359402138165941112155942211114594317917594423195945124155946212314594719117594821519594913615595021351459511103175952227195953112023595424754595517953595627555595711322359582595459591915359602875559611144235962271545963110353596429955596515265966280545967175245968211152596911726597029254597118724597221235259731292659742104545975199245976213552597714822597823951597914850598023245981160225982251515983160505984215245985172225986263515987172505988227245989147215990211955599111145259922392159931592159942131555995112652599625121599717121599821435559991138526000263216001132560022111536003148196004275586005115256006212353600716019600828758600912725601021355360111721960122995860131357601427525601514526016211155601711557601828725601911652602021235560211275760222992560231285260242135556025177596026212018602711182160282114246029189596030213218603111302160322126246033110159603421441860351142216036213824603711223603821112260391792560402327604112423604221232260431912560442152760451362360462135226047110325604822727604911203160502476260511796160522756360531132316054259626055191616056287636057114431605827162605911036160602996360611534606228062606317532606421116060651173460662926260671873260682123606069129346070210462607119932607221356060731483060742395960751485860762332607716030607825159607916058608021532608117230608226359608317258608422732608514729608621196360871114606088239296089159296090213163609111266060922512960931712960942143636095113860609626329609713336098211161609914827610027566610111533610221236161031602761042876661051273361062135616107172276108299666109136561102753361111460611221116361131156561142873361151166061162123636117127656118299336119128606120213563612117767612221202661231118296124211432612518967612621322661271130296128212632612911016761302144266131114229613221383261331123161342111306135179336136233561371243161382123306139191336140215356141136316142213530614311033361442273561451473961462398614711203861482481614915939615025186151113238615226016153171396154263861551144386156272161571814615827511615918036616027656161193461622871161631923661642885616511054616629911616711043661682100561691111406170276366171148617224376173112340617428836617511686176216376177113540617821003661791288618022837618111123961822473661831768618424034618511243961862593661871888618825234618911363961902713661911100861922643461931112406194211366195111266196240561971124406198223366199112466200252562011136406202235366203113666204264562051763962062113862071112762082403762091883962102125862111124762122523762131100396214213786215113676216264376217154362182794162191425622024962211174362222914162231545622421696225129436226210341622716656228228962291476623024036231148862322566233159662342523623516086236217662371716623826436239172862402296624114747624223916624311204662442489624515947624625116624711324662482609624917147625026316625111444662522729625318112625427519625518044625627613625719312625828719625919244626028813626111051262622991962631104446264210013626511114862662764462671416626824456269112348627028844627111616627221645627311354862742100446275128166276228456277111247627824744627917616628024042628111244762822594462831881662842524262851136476286271446287110016628826442628911124862902114462911112146292240136293112448629422344629511241462962521362971136486298235446299113614630026413630117647630221131663031112156304240456305188476306212516630711241563082524563091100476310213716631111361563122644563131551631427949631514213631624176317117516318291496319154136320216176321129516322210349632316613632422817632514714632624011632714816632825146329159146330252116331160166332217146333171146334264116335172166336229146337147556338239246339112054634024817634115955634225124634311325463442601763451715563462632463471144546348272176349181206350275276351180526352276216353193206354287276355192526356288216357110520635829927635911045263602100216361111156636227652636314246364245363651123566366288526367116246368216536369113556637021005263711282463722285363731112556374247526375176246376240506377112455637825952637918824638025250638111365563822715263831100246384264506385111256638621152638711122263882402163891124566390223526391112422639225221639311365663942355263951136226396264216397176556398211324639911122364002405364011885564022125246403112423640425253640511005564062137246407113623640826453640915596410279576411142216412242564131175964142915764151542164162162564171295964182103576419166216420228256421147226422240196423148246424252264251592264262521964271602464282172264291712264302641964311722464322292264331476364342393264351120626436248256437159636438251326439113262644026025644117163644226332644311446264442722564451812864462753564471806064482762964491932864502873564511926064522882964531105286454299356455110460645621002964571111646458276606459143264602461646111236464622886064631163264642166164651135646466210060646712832646822861646911126364702476064711763264722405864731124636474259606475188326476252586477113663647827160647911003264802645864811112646482211606483111230648424029648511246464862236064871124306488252296489113664649023560649111363064922642964931766364942113326495111231649624061649718863649821253264991124316500252616501110063650221373265031136316504264616505156765062796565071422965082433650911767651029165651115429651221633651312967651421036565151662965162283365171473065182402765191483265202530652115930652225227652316032652421730652517130652626427652717232652822930652913436530211186531140356532276376533115436534212386535152356536288376537127436538213586539164356540210037654114338654224565431403865442112346545155386546216565471523865482124346549167386550228565511643865522136346553111676554258655514106556246655711287655821786559116106560216665611140765622298656312810656422866565145376566240265671404656827666569157376570252265711524657228866573169376574264265751644657621006657711132657821193765791423965802406658111252658221313765831543965842526658511372658621433765871663965882646658911143965902112356591195659228240659311263965942124356595121565962944065971138396598213635659913356600210640660117640660224766031764266042112386605188406606216766071884266082124386609110040661022876611110042661221363866131112466142833866151424661624076617112446618295386619154466202527662111364662221073866231664662426476625135166262111166627140436628276456629115516630212316663115243663228845663312751663421351666351644366362100456637143466638241366391404666402112426641155466642216136643152466644212442664516746664622813664716446664821364266491116156650251666511418665224146653112815665421716665511618665621614665711401566582291666591281866602281466611454566622401066631401266642761466651574566662521066671521266682881466691694566702641066711641266722100146673111310667421194566751424766762401466771125106678213145667915447668025214668111371066822143456683166476684264146685111447668621124366871913668828248668911264766902124436691121136692294486693113847669421364366951331366962106486697176486698241566991765067002112466701188486702216156703188506704212446670511004867062281567071100506708213646670911121267102834667111421267122401567131124126714295466715154126716252156717113612671821074667191661267202641567211359672221112467231405167242765367251155967262123246727152516728288536729127596730213524673116451673221005367331435467342421673514054673621125067371555467382162167391525467402124506741167546742228216743164546744213650674511162367462524674714266748242267491128236750217246751116266752216226753114023675422924675512826675622822675714553675824018675914020676027622676115753676225218676315220676428822676516953676626418676716420676821002267691113186770211953677114255677224022677311251867742131536775154556776252226777113718677821435367791665567802642267811114556782211251678319216784282566785112655678621245167871212167882945667891138556790213651679113321679221065667931765667942423679517658679621125467971885667982162367991885868002124546801110056680222823680311005868042136546805111220680628354680714220680824023680911242068102955468111542068122522368131136206814210754681516620681626423681713676818211132681914059682027661682111567682221233268231525968242886168251276768262135326827164596828210061682914362683024296831140626832211258683315562683421629683515262683621245868371676268382282968391646268402136586841111631684225326843143468442430684511283168462173268471163468482163068491140316850229326851128346852228306853145616854240266855140286856276306857157616858252266859152286860288306861169616862264266863164286864210030686511132668662119616867142636868240306869112526687021316168711546368722523068731137266874214361687516663687626430687711146368782112596879192968802826468811126636882212459688312129688429464688511386368862136596887133296888210664688917664689024316891176666892211262689318864689421631689518866689621246268971100646898228316899110066690021366269011112286902283626903142286904240316905112428690629562690715428690825231690911362869102107626911166286912264316913112669142442691514136916212396917124669182164269191533692022439692113666922228426923165369242363969251114569262804169271421692821134692911265693029241693115416932212546933113856934210441693516616936213746937111436938276116939111440694024146941123436942288116943112640694425346945135436946210011694711384069482654694914116950211286951179426952253969531531695421248695519142695621739695716516958213686959110342696022939696111143869622413769631114469642413969651126386966253376967112646968253396969113838697026537697111384697226539697314286974211366975184116976275697715486978212566979196116980219569811668698221376698311081169842315698517946986241669871116336988211376989191469902536699111283369922125769931103469942656699511403369962137769971896998254169991443870002774270011209700221741700315638700428942700513297006229417007168387008210142700911214701024507011141117012212477013124147014216507015153117016224477017136147018228507019165117020236477021111413702228049702314297024211312702511261370262924970271549702821251270291138137030210449703116697032213712703311151703427619703511144870362411270371235170382881970391126487040253127041135517042210019704311384870442651270451419704621121670471795070482547704915397050212416705119150705221747705316597054213616705511035070562294770571114467058241457059111412706024147706111264670622534570631126127064253477065113846706626545706711381270682654770691421670702113147071184197072271370731541670742125147075196197076219137077166167078213714707911081970802311370811791270822411470831116417084211315708519112708625314708711284170882125157089110312709026514709111404170922137157093181770942549709514446709627750709712017709821749709915646710028950710113217710222949710316846710421015071051122271062458710714119710821255710912422711021658711115319711222455711313622711422858711516519711623655711711142171182805771191421771202113207121112621712229257712315417712421252071251138217126210457712716617712821372071291115971302762771311114567132241207133123597134288277135112656713625320713713559713821002771391138567140265207141141177142211224714317958714425557145153177146212424714719158714821755714916517715021362471511103587152229557153111454715424153715511142071562415571571126547158253537159112620716025355716111385471622655371631138207164265557165142247166211322716718427716827217169154247170212522717119627717221921717316624717421372271751108277176231217177179207178241227179111649718021132371811912071822532271831128497184212523718511032071862652271871140497188213723718918257190255771911445471922775871931202571942175771951565471962895871971322571982295771991685472002101587201112307202246672031412772042126372051243072062166672071532772082246372091363072102286672111652772122366372131114297214280657215142257216211328721711262972182926572191542572202125287221113829722221046572231662572242137287225111677226276357227111464722824128722912367723028835723111266472322532872331356772342100357235113864723626528723714125723821123272391796672402563724115325724221243272431916672442176372451652572462136327247110366724822963724911146272502416172511114287252241637253112662725425361725511262872562536372571138627258265617259113828726026563726114232726221133072631843572642729726515432726621253072671963572682192972691663272702137307271110835727223129727317928727424130727511165772762113317277191287278253307279112857728021253172811103287282265307283114057728421373172851833728625657287144627288277667289120337290217657291156627292289667293132337294229657295168627296210166729711173972982764372991433373002413673011129397302288437303155337304253367305114139730621004373071673373082653673091116373102536731116387312277873131128373142173673151183873162898731711403731822936731913038732021018732111204073222697323142337324211357325113240732621897327154337328212557329114440733023097331166337332213757333141273342413473351473373362540733715327338253347339159337340217407341165273422653473431713373442294073451118734627741734711143473482784734912387350289417351112634735229047353135873542101417355113834735621024735718237735824240735917836736026573611943773622544073631903673642185736511063773662664073671102367368230573691115273702417737117897372278377373112727374253773751909737629037737711392737826577379110297380210237738118357382248377383178107384266738519557386260377387190107388218673891107573902723773911102107392230673931117477394276517395143417396241447397112947739828851739915541740025344740111414774022100517403167417404265447405111611740625447407164674082771674091128117410217447411118467412289167413114011741422944741513046741621011674171120487418261774191424174202113137421113248742221817742315441742421251374251144487426230177427166417428213713742914110743024142743114741743225487433153107434253427435159417436217487437165107438265427439171417440229487441111167442277497443111442744427812744512316744628949744711264274482901274491351674502101497451113842745221021274531824574542424874551784474562613745719445745825448745919044746021813746111064574622664874631102447464230137465111510746624115746717817746827845746911271074702531574711901774722904574731139107474265157475110217747621024574771831374782484574791781874802614748119513748226045748319018748421814748511071374862724574871102187488230147489111755749027659749114349749224152749311295574942885974951554974962535274971141557498210059749916749750026552750111161975022552750316547504277247505112819750621752750711854750828924750911401975102295275111305475122101247513112056751426257515142497516211321751711325675182182575191544975202125217521114456752223025752316649752421372175251411875262415075271474975282556752915318753025350753115949753221756753316518753426550753517149753622956753711124753827757753911145075402782075411232475422895775431126507544290207545135247546210157754711385075482102207549182537550242567551178527552262175531945375542545675551905275562182175571106537558266567559110252756023021756111151875622412375631782575642785375651127187566253237567190257568290537569113918757026523757111022575722102537573183217574248537575178267576262275771952175782605375791902675802182275811107217582272537583110226758423022758511176375862766775871435775882416075891129637590288677591155577592253607593114163759421006775951675775962656075971116277598256075991662760027732760111282776022176076031186276042893276051140277606229607607130627608210132760911206476102633761114257761221132976131132647614218337615154577616212529761711446476182303376191665776202137297621141267622241587623147577624256476251532676262535876271595776282176476291652676302655876311715776322296476331113276342776576351114587636278287637123327638289657639112658764029028764113532764221016576431138587644210228764518261764624264764717860764826297649194617650254647651190607652218297653110661765426664765511026076562302976571115267658241317659178337660278617661112726766225331766319033766429061766511392676662653176671102337668210261766918329767024861767117834767226307673195297674260617675190347676218307677110729767827261767911023476802303076811784376822677683111734768426107685190437686218776871129347688218107689110243769023077691114134769223010769318010769426397695187769627957697192107698218397699120777002915770111041077022303977031327770421035770517839770628057707111834770824337709190397710292577111130347712255377131102397714210457715114234771626737717143397718264177191117477202115357721155397722218417723112947724212735772516739772623041772711414772821393577291942773021153677311116407732211647733121427734212736773511284077362128477371334277382139367739114040774021404774111205774224357743181367744211636774511325774625557747193367748212836774911445775026757751110536775221403677531843775427407755145277562445775712043775821940775915727760256577611324377622314077631692776426857765111635776627910776718107768280877691128357770291107771120107772292877731140357774210310777513210777621048777717851777826157779111742778026187781190517782218157783112942778421818778511025177862301577871141427788230187789180187790264777911815779227913779319218779421847779512015779629113779711041877982304777991321578002103137801178477802280137803111842780424311780519047780629213780711304278082551178091102477810210413781111424278122671178131434778142649781511171278162115437817155477818218497819112912782021274378211674778222304978231141127824213943782519507826211544782711164878282116127829121507830212744783111284878322128127833133507834213944783511404878362140127837112013783824313783918144784021164478411132137842255137843193447844212844784511441378462671378471105447848214044784918517850274878511451078522441378531205178542194878551571078562561378571325178582314878591691078602681378611116437862279187863181878642801678651128437866291187867120187868292167869114043787021031878711321878722104167873178597874262378751117507876262678771905978782182378791129507880218267881110259788223023788311415078842302678851802678862655788718237888279217889192267890218557891120237892291217893110426789423055789513223789621032178971785578982802178991118507900243197901190557902292217903113050790425519790511025579062104217907114250790826719790914355791026577911111720791221155179131555579142185779151129207916212751791716755791823057791911412079202139517921195879222115527923111656792421162079251215879262127527927112856792821282079291335879302139527931114056793221402079331120217934243217935181527936211652793711322179382552179391935279402128527941114421794226721794311055279442140527945185979462756794714518794824421794912059795021956795115718795225621795313259795423156795516918795626821795711165179582792679591826796028024796111285179622912679631202679642922479651140517966210326796713226796821042479691786779702631797111175879722634797319067797421831797511295879762183479771102677978230317979114158798023034798118034798226637983183179842792979851923479862186379871203179882912979891104347990230637991132317992210329799317863799428029799511185879962432779971906379982922979991130588000255278001110263800221042980031142588004267278005143638006266580071117288008211559800915563801021865801111292880122127598013167638014230658015114128801621395980171966801821156080191116648020211628802112166802221276080231128648024212828802513366802621396080271140648028214028802911202980302432980311816080322116608033113229803425529803519360803621286080371144298038267298039110560804021406080411867804227648043145268044244298045120678046219648047157268048256298049132678050231648051169268052268298053111659805427934805518348056280328057112859805829134805912034806029232806111405980622103348063132348064210432806514448066242378067180398068243480691564807025437807119239807225548073168480742663780751104398076267480771793680782784180791451808027978081191368082290418083157180842917808511033680862102418087169180882103780891101080902427809118442809224548093122108094254780951964280962574809713410809826678099110842810026948101171081022432810311153981042793981051191081062552810711273981082913981091311081102672811111393981122103398113144781142742811511173581162116398117156781182194281191129358120212839812116878122231428123114135812421403981251455812628378127110681282116378129157581302203781311226813221283781331695813423237813513468136214037813714618138244348139182368140245381411581814225634814319436814425738145170181462683481471106368148269381491103681502806815118268152281378153122368154292681551946815629337815713436815821046815911066816021053781611441281622424581631804781642431281651561281662544581671924781682551281691681281702664581711104478172267128173179448174278498175145981762791581771914481782904981791579818029115818111034481822102498183169981842103158185110188186242158187184508188245128189122188190254158191196508192257128193134188194266158195110850819626912819717188198243108199111547820027947820111918820225510820311274782042914782051311882062671082071139478208210347820914415821027508211111743821221164782131561582142195082151129438216212847821716815821823150821911414382202140478221145138222284582231101482242116458225157138226220458227122148228212845822916913823023245823113414823221404582331469823424442823518244823624511823715898238256428239194448240257118241170982422684282431106448244269118245110448246280148247182148248281458249122448250292148251194148252293458253134448254210414825511061482562105458257144208258242538259180558260243208261156208262254538263192558264255208265168208266266538267110455826826720826917952827027857827114517827227923827319152827429057827515717827629123827711035282782102578279169178280210323828111026828224223828318458828424520828512226828625423828719658828825720828913426829026623829111085882922692082931726829424318829511155582962795582971192682982551882991127558300291558301131268302267188303113955830421035583051442383062758830711175183082116558309156238310219588311112951831221285583131682383142315883151141518316214055831714521831828538319110228320211653832115721832222053832312222832421285383251692183262325383271342283282140538329146178330244508331182528332245198333158178334256508335194528336257198337170178338268508339110652834026919834111052834228022834318222834428153834512252834629222834719422834829353834913452835021042283511106228352210553835314428835424261835518063835624328835715628835825461835919263836025528836116828836226661836311046383642672883651796083662786583671452583682793183691916083702906583711572583722913183731103608374210265837516925837621033183771103483782423183791846683802452883811223483822543183831966683842572883851343483862663183871108668388269288389173483902432683911115638392279638393119348394255268395112763839629163839713134839826726839911396384002103638401144318402276684031117598404211663840515631840621966840711295984082128638409168318410231668411114159841221406384131452984142861841511030841621166184171572984182206184191223084202128618421169298422232618423134308424214061842514625842624458842718260842824527842915825843025658843119460843225727843317025843426858843511066084362692784371106084382803084391823084402816184411226084422923084431943084442936184451346084462104308447110630844821056184491828845021173845111137845229108453194884542129384551233784562211084571106884582141384591353784602331084611120398462293984631464846429118465113239846622139846715848468221118469114439847023339847117048472233118473111118474281398475147378476211740847712311847829339847915937848021294084811351184822105398483171378484214140848511183684862814084871463884882118338489113036849029340849115838849221303384931142368494210540849517038849621423384971474849821041849918439850028398501159485022224185031963985042959850517148506234418507110839850821079850911158510246398511112038512211938851312358514258398515113238516213138851713558518270398519114438520214338852118341852221184085231484852421196852519541852621304085271604852821316852911074185302142408531172485322143685331117853424734853518458536283428537123785382593485391965854029542854113578542271348543110858544210742854518216854621171185471114585482918854919416855021291185511234585522211885531106168554214111855513545855623318855711204785582947855914612856029198561113247856222147856315812856422119856511444785662334785671701285682331985691111985702814785711474585722117488573123198574293478575159458576212948857713519857821054785791714585802141488581111844858228148858314646858421184185851130448586293488587158468588213041858911424485902105488591170468592214241859314712859421049859518447859628317859715912859822249859919647860029517860117112860223449860311084786042107178605111138606246478607112011860821194686091231386102584786111132118612213146861313513861427047861511441186162143468617183498618211848861914812862021191486211954986222130488623160128624213114862511074986262142488627172128628214314862911115863024742863118413863228350863312315863425942863519613863629550863713515863827142863911081386402107508641182248642211719864311153864429268645194248646212919864712353864822126864911062486502141198651135538652233268653112055865429558655146208656292786571132558658221558659158208660221278661114455866223355866317020866423327866511127866628155866714753866821175686691232786702935586711595386722129568673135278674210555867517153867621415686771118528678281568679146548680211849868111305286822935686831585486842130498685114252868621055686871705486882142498689147208690210578691184558692283258693159208694222578695196558696295258697171208698234578699110855870021072587011112187022465587031120198704211954870512321870625855870711321987082131548709135218710270558711114419871221435487131835787142118568715148208716211922871719557871821305687191602087202131228721110757872221425687231722087242143228725111238726247508727184218728283588729123238730259508731196218732295588733135238734271508735110821873621075887371823287382117278739111618740293487411943287422129278743123618744221348745110632874621412787471356187482333487491120638750296387511462887522935875311326387542216387551582887562213587571144638758233638759170288760233358761111358762281638763147618764211764876512335876629363876715961876821296487691353587702105638771171618772214164877311186087742816487751466287762118578777113060877829364877915862878021305787811142608782210564878317062878421425787851472887862106587871846387882833387891592887902226587911966387922953387931712887942346587951108638796210733879711129879824663879911202788002119628801123298802258638803113227880421316288051352988062706388071144278808214362880918365881021186488111482888122119308813195658814213064881516028881621313088171107658818214264881917228882021433088211113188222475888231842988242836688251233188262595888271962988282956688291353188302715888311108298832210766883314540883429988351118688362118288371574088382219883911306884021302884116940884223398843114268844214228845146348846245688471463588482103988491583488502576885115835885222239885317034885426968855170358856234398857110408858281418859184368860210988611224088622934188631963688642229886513440886621054188671108368868234988691838887021173888711119338872282988731958887421293888751131338876294988771107888782141388879114333888021069888111198882211934888318498884212368885123988862131348887196988882243688891359889021433488911108988922363688931128889421194889514836889621203788971248889821314889916036890021323789011368890221434890317236890421443789051120889062119368907148289082487890911328891021313689111602891226078913114488914214336891517228916272789171843789182114089191841089202124389211963789222234089231961089242244389251108378926235408927110810892823643892914548893029178931111814893221181089331574889342211789351130148936213010893716948893823317893911421489402142108941146428942245148943146438944210478945158428946257148947158438948222478949170428950269148951170438952234478953110488954281498955184448956210178957122488958293498959196448960222178961134488962210549896311084489642341789651831689662117468967111941896828217896919516897021294689711131418972294178973110716897421414689751143418976210617897711117897821194289791841789802124489811231789822131428983196178984224448985135178986214342898711081789882364489891121689902119128991148448992212045899312416899421311289951604489962132458997136168998214312899917244900021444590011120169002211944900314810900424815900511321690062131449007160109008260159009114416901021434490111721090122721590131844590142114890151841890162125190171964590182234890191961890202245190211108459022235489023110818902423651902514556902629259027111822902821181890291575690302212590311130229032213018903316956903423325903511422290362142189037146509038245229039146519040210559041158509042257229043158519044222559045170509046269229047170519048234559049110569050281579051184529052210259053122569054293579055196529056222259057134569058210557905911085290602342590611832490622117549063111949906428225906519524906621295490671131499068294259069110724907021415490711143499072210625907311125907421195090751842590762125290771232590782131509079196259080224529081135259082214350908311082590842365290851122490862119209087148529088212053908912424909021312090911605290922132539093136249094214320909517252909621445390971120249098211952909914818910024823910111322491022131529103160189104260239105114424910621435291071721891082722391091845391102115691111842691122125991131965391142235691151962691162245991171108539118235569119110826912023659912114564912229339123111830912421182691251576491262213391271130309128213026912916964913023333913111423091322142269133146589134245309135146599136210639137158589138257309139158599140222639141170589142269309143170599144234639145110649146281659147184609148210339149122649150293659151196609152222339153134649154210565915511086091562343391571833291582117629159111957916028233916119532916221296291631131579164294339165110732916621416291671143579168210633916911133917021195891711843391722126091731233391742131589175196339176224609177135339178214358917911083391802366091811123291822119289183148609184212061918512432918621312891871606091882132619189136329190214328919117260919221446191931120329194211960919514826919624831919711323291982131609199160269200260319201114432920221436092031722692042723192051846192062116492071843492082126792091966192102236492111963492122246792131108619214235649215110834921623667


[0071] In another embodiment, the relative positions of the 9216 dots, in X and Y coordinates range from (0,0) to (64+VO, 144). In this exemplary embodiment, the number of rows has increased by a vertical offset (VO), where different compound placement zones have an equal number of rows, but include a different subset of the 64+VO rows. For example, FIGS. 3 illustrates four adjacent zones 330, 340, 350, and 360. The vertically offset zones allow the placement of alignment dots 320 on opposite sides of the ChemCard, efficient spacing between the dots 130, without requiring the size of the ChemCard to increase. In the exemplary embodiment of FIG. 3, adjacent zones have the same number of rows (64), but they are offset by VO=5 rows. Thus, the rows in the second and fourth zones 340 and 360 are numbered from 1 to 64, while the rows in the first and third zones are numbered from 6 to 69. One of skill in the art will recognize that the vertical offset in FIG. 3 (e.g. 5) is exemplary, and any vertical offset, e.g. V=1, 2, 3, 4, 6, 8, 10, 12, 15, 20 may be implement according to the same concepts.


[0072] In one embodiment, the method of FIGS. 4 and 5 is executed using software running on a computer. One objective of the algorithm (from which the software is based) is to determine a Sequence Array SA having elements representative of dispense positions on a ChemCard, such that each of the compounds placed in each of the dispenses satisfy the neighboring compound constraints, as discussed above. More specifically, the constraints for a particular compound are satisfied when each occurrence of a particular compound has different neighbors within their respective neighbor distances. Likewise, constraints for a particular dispense position are satisfied when each of the compounds in the dispense satisfy the constraints. For example, in an embodiment using a 9,216 compound carrying ChemCard and a 12 pipette dispense mechanism (where all 12 pipettes are fired simultaneously), there are 768 possible dispense positions. In this case, A=768 and SA contains non-repeating values from 1 to 768 which represent dispense locations on the ChemCard. An array C of size A (CA) contains, at each location A, a plurality J of compounds to be dispensed at the dispense position stored in SA. Thus, in an embodiment that dispenses 2 occurrences of each compound, each compound will be in two different elements of CA. For example, C1 may contain compounds 1-12 and C2 may contain compounds 1-12, while C3 and C4 each contain compounds 13-24. Thus, if S1=324, S2=531, C1=compounds 1-12, and C2=compounds 1-12 then compounds 1-12 will be dispensed at dispense positions 324 and 531. When the algorithm is determining the array SA, each of the 12 compounds in each of the dispenses SA are tested against the constraints to determine if other occurrences of each of the compounds has the same neighbors. If any of the 12 compounds in the dispense violate the constraint check then the dispense position SA violates the constraints and the value of SA (representing a dispense position) must be changed in order to produce a complete array SA that satisfies the constraints.


[0073]
FIG. 7 is a flow chart illustrating a method of determining an array SA such that each of the compounds in each of the A dispense positions satisfy the neighbor constraints. In advantageous embodiments, each of the dispense positions dispenses a plurality J of compounds. As discussed above, this may be accomplished by firing all of the pipettes in a dispense mechanism simultaneously (e.g., J=number of pipettes), or, alternatively, firing only a portion of the pipettes in a dispense mechanism over a particular location (e.g., J=number of pipettes fired over each ChemCard location). The plurality of dispense positions are provided in an array PA, where a first element contains the X,Y coordinates of the location of the dispense on the ChemCard and a second element contains a status indicator representative of whether each particular position PA has been placed in the array SA. Thus, as an element of array SA is filled with a dispense position PA, the status indicator of the particular dispense position in PA is changed to indicate the position has been placed in the array SA. For example, if S1 is filled with dispense position 425, the status indicator of P425 would be set to placed. In an advantageous embodiment, each of the status indicators for the dispense positions P are set to unplaced before the algorithm begins filling the array SA.


[0074] In block 610, the array SA is filled with random, non repeating values from 1 to A. Thus, in an embodiment having 768 dispense positions (i.e. A=768), the values of each SA is a random value between 1 and 768, where each of the values of different elements of SA are unique. For example, S1=324, S2=531, S3=13, S4=230. . . S768=654, where each of the values of SA represent dispense positions on a ChemCard (and corresponds with a dispense position PA). Although each of the A elements of the array SA are filled with dispense positions, the corresponding status indicator P for the dispense positions is not set to placed as the dispense positions in SA at this point are preliminary (e.g., constraint checks have not yet been performed). The status indicator for a particular dispense position P is set to placed only after the constraint checks (e.g., FIG. 8) have been satisfied for the particular dispense position P.


[0075] In another embodiment, the array SA may be initialized and filled with any value. For example, each element of SA may be set to zero (0).


[0076] In block 620 a counter X is set to zero. The counter X is used to step through each element of the array SA, setting the value of each SA to a dispense position after each of the J compounds within each of the dispense positions is checked against the neighbor constraints. In the 768 dispense position example, X will increment from 0 to 768, checking for constraint violations at each dispense position, before completing the array SA. In alternative embodiments, the counter X may begin at any location within the array SA and reset to zero after checking the last member of the array. For example, in a 768 dispense position system, X may be set to 300, iteratively incremented to 768 after checking for constraint violations at each dispense position, reset to zero (0), and iteratively incremented to 298 after checking for constraint violations at each dispense position. Alternatively, each dispense position may be tested against the constraints in any other order, so long as each of the dispense positions (and more particularly, each of the compounds within a dispense) are tested against the neighbor constraints.


[0077] In block 630, counter X is incremented to the next dispense position to be tested. In the example of FIG. 7, each of the compounds is placed on the ChemCard twice, in sequential dispenses (e.g., the same J compounds are dispensed at position S1 and S2). Thus, the constraints only need to be checked after each pair of compounds is assigned to a particular dispense position. Thus, X is set to increment by 2 after each round of constraint checks. As will be discussed in more detail below, any number of each of the compounds may be placed on the ChemCard, and, thus, X may be incremented by varying amounts.


[0078] In block 640, each of the J compounds in CX is checked against the neighbor constraints (as described with reference to FIG. 8, for example). For example, if the number of compounds in each dispense J=6 then the constraints check is performed for each of the 6 compounds in the dispense CX at the dispense position in SX. In general, the neighbor constraint check determines whether a particular compound (e.g., at dispense location SX) has different neighbors (within the defined neighbor distance) than other occurrences of the particular compound (e.g., at other dispense locations). One method of performing a neighbor constraint check is described in detail with reference to FIG. 8. However, other methods of performing the neighbor constraint check are contemplated.


[0079] Block 650 is a decision block that determines whether or not there is a constraint violation for any of the J compounds in CX at the dispense position SX. As stated above, if any of the J compounds in CX violate the neighbor constraints at dispense position SX then the value of SX must be changed to another dispense position. If there are no constraint violations for any of the compounds in CX then the method continues to Block 690 where the status of the dispense position used in SX is set to placed. However, if there are constraint violations for any of the compounds in CX then the method continues to Blocks 670, and then to block 660 or 680 where adjustments to the position of at least the dispense position in SX are made.


[0080] Block 670 is a decision block that determines if there are remaining unplaced dispense positions that have not been tested at the dispense location SX. In one embodiment, the status of the positions P are polled in order to determined which dispense positions remain unplaced. As discussed above, in order to ensure that each compound in the array satisfies the neighbor constraints, when a constraint violation is found for any one of the J compounds CX at a dispense position SX, the dispense position SX is changed to another available dispense position and the constraint for each of the J compounds at the new dispense position SX are tested. For example, if S232=342 and one of the J compounds in C232 violates the neighbor constraints, S232 may be changed to another dispense position. In one embodiment, SX is set to the value of the next dispense positions that has a status indicator set to unplaced. Thus, if the status indicators in P343 and P344 have already been set to placed (e.g., S53=343 and S211=344 and the neighbor constraints were satisfied for the compounds C53 at dispense position 343 and for the compounds C211, at dispense position 344), but the status indicator for P345 is set to unplaced, Block 680 will set the value of SX to 345. However, if there are no remaining dispense positions that have not been tested against the neighbor constraints at the position of SX (e.g., every P with a status indicator set to unplaced has already been tested at dispense position SX), then the method continues to Block 660 where the value of X is decremented.


[0081] If Block 670 determines there are no remaining dispense positions that have not been tested against the neighbor constraints at the position of SX, at Block 660 the value of X is decremented by 2. As discussed above, the method of FIG. 7 is exemplary of a system that places two occurrences of each compound on the ChemCard, and, thus, the constraints only need be checked for every other element of the array. Thus, in a system that places 4 occurrences of each compound on a single ChemCard, the value of X may be decremented by 4, for example. After X has been decremented, the method returns to Block 670 to determine if there are remaining dispense positions that have not been tested at the dispense location SX. Note that the current value of SX (e.g., after SX has been decremented in Block 660) will have satisfied the neighbor constraints in a previous iteration of the constraint checks of Block 640. However, because no acceptable dispense position could be found for the next array element SX+2, the value of SX may be changed in an attempt to adjust at least some of the neighbors of SX+2 and allow SX+2 to pass the neighbor constraint test. Thus, the status indicator for the dispense position P that had already been set to placed at position SX is set to unplaced to ensure that the position is available for another position in array SA. The method then returns to Block 640 where the constraints are checked for the new dispense position in SX .


[0082] If Block 650 determines that there is no constraint violation for the J compounds CX at dispense position SX then the method continues to Block 690 where the status indicator for the dispense position tested in SX is set to placed. For example, if SX=562, then the status indicator of P562 is set to placed. In one embodiment, the status indicator may be set to either a 1 or a 0, where 1 indicates a placed dispense position and a 0 indicates an unplaced dispense position. In this embodiment, the array may be initialized with all zeros at the beginning of the method of FIG. 7. Likewise, when a dispense position SX satisfies the constraints, the status indicator corresponding with the dispense position of SX may be changed to a one, indicating that the dispense position has been filled.


[0083] Block 695 is a decision block that determines whether each of the array elements in SX has been tested against the neighbor constraints by determining if counter X is equal to A. For example, in a system where the total dispense positions A=768, when X=766 at Block 695, the value of X will increment to 768 at Block 630 and the last element of SA will be checked against the constraints in Block 640. After determining that the constraints for the dispense position in S768 are satisfied, the array SA is complete. Therefore, at Block 695 the method determines that X=A (e.g., 768=768) and the method continues to Block 699 which indicates that the array SA is complete.


[0084]
FIG. 8 is a flowchart illustrating one method of performing the neighbor constraint checks for an exemplary compound M. In one embodiment, an algorithm searches for a pattern where one dot of each compound is at least a minimum distance (e.g., the neighbor distance) from every other compound in the array by checking the distance between each pair of dots in the array. However, such an algorithm would perform many unnecessary calculations as constraints are checked with respect to dots that are not within the neighbor distance Dpmin (and therefore do not violate a constraint for the particular compound) of any of the multiple dots of a particular compound. Therefore, in an advantageous embodiment, rather than testing each occurrence of a particular dot with every other dot in the array, only those dots within the neighbor distance Dpmin are checked.


[0085] As discussed above, for each dispense position a plurality of J compounds may be placed. Thus, for each dispense position, the flowchart of FIG. 8 may need to be executed for each of the plurality of J compounds before the neighbor constraints are satisfied for the particular dispense position. The exemplary constraint check method of FIG. 8 is specific to a system that places pairs of compounds in the array. However, a similar method may easily be derived, based on the same nearest neighbor principles, for a system that places any number of dots of each compound in the array. The method of FIG. 8 makes reference to M1 and M2, which are indicative of two occurrences of the compound M. As indicated above, the method of FIG. 8 may be implemented in the array development method of FIG. 7, as well as any other method that requires a neighbor constraint check.


[0086] In order to provide a graphic example of the operation of the neighbor constraint check of FIG. 8, FIG. 9 will now be described and referred to with reference to the constraint check method of FIG. 8. FIG. 9 illustrates a portion of a placement array geographically arranged as the compounds would be placed on a ChemCard. The exemplary embodiment of FIG. 9 utilizes a honeycomb placement pattern. The compound M, including M1 and M2, represents a dot for which constraints are being checked, wherein M1 is to be dispensed in a first dispense (e.g., for a particular dispense T, M1 is one of the compounds J in CT that will be dispensed at location ST) and M2 is to be dispensed in a second dispense (e.g., M2 is one of the compounds J in CT+that will be dispensed at location ST+1). The pairs of dots labeled Q1- Q6 represent the pairs of neighbors of M2 at the current location within the array S. Each of the unlabeled dots (representative of dot placement locations) may have a compound already assigned to them, or, alternatively, may be positions that have not been assigned compounds yet.


[0087] In Block 702 the variable D is set to equal the distance between M1 and M2. In an embodiment that places multiple compounds in each dispense position (e.g., J>1), so long as the relative positions of each of the compounds in the dispense mechanism remains constant, D will remain constant for each of the compounds in the dispense.


[0088] In Block 704 the variable D is compared to the neighbor distance Dpmin. If the distance D is less than Dpmin there is a constraint violation and the method ends. More particularly, if D is less than Dpmin then both occurrence of M (i.e. M1 and M2) are close enough to one another so that an active spot pattern diffusing from compound M may not be definitively attributable to the compound M. This may occur as a result of the diffusion spots from M1 and M2 overlapping so that a spot detection machine recognizes only a single spot pattern. If the distance D is not less than Dpmin there is no constraint violation and the method continues to Block 710.


[0089] In Block 710, the method determines the neighbors of the occurrence of M at the current dispense position (designated as M2). Thus, when used as part of Block 640 (FIG. 7), Block 710 determines the neighbors of the compound M2 at dispense position SX (where compound M1 is placed at dispense position SX−1). In the example of FIG. 9, the neighbors are those compounds within the radius of the circle 940 having a radius of Dpmin, where the line 905 is set to the distance Dpmin. The neighbors of compound M2 are referred to herein as Q, wherein Q includes each neighbor Q1, Q2, Q3. . . QY, where Y is the total number of neighbors of M2. The number of dots in a neighborhood, called the size of the neighborhood, depends on the value of Dpmin, the dot grid spacing, and the location of the central dot (e.g., edge dots have smaller sets). A neighborhood's size is always much smaller than the total number of dots on a card. Thus, in the example of FIG. 9, the neighbors of M2 include Q1- Q6. In other embodiments, the number of neighbors of compound M may vary greatly depending on the particular assay process and the method of determining the neighbors.


[0090] In Block 720 the variable Y is initialized to the value of zero. The variable Y is incremented as neighbor constraints are checked for each neighbor QY of M2.


[0091] In Block 730 the variable Y is incremented by 1 to move the constraint check to the next neighbor. For example, if the method had just completed checking the neighbor constraints with respect to M and Q3 then Y is incremented in Block 730 so that the neighbor constraints may now be checked with respect to M and Q4.


[0092] In Block 770 the variable D is set equal to the distance between Ml and the occurrence of compound QY that is not a neighbor to M2. With reference to exemplary FIG. 9, D is illustrated by the line 930 for the situation where Y=3 (i.e. constraint are being checked for M with respect to neighbor Q3).


[0093] Block 780 is a decisions block that determines whether the distance D between M1 and the occurrence of compound QY that is not a neighbor to M2 is greater than the neighbor distance Dpmin. As described above, the neighbor distance Dpmin may be determined based on many factors. If the distance D is greater than the neighbor distance Dpmin, the constraints for compound M have been met and the method continues to Block 790. However, if the distance D is less than Dpmin the method continues to Block 799 indicating a constraint violation.


[0094] By halting the process as soon as the constraint is violated, the method rejects not only the current sub-pattern, but all patterns of which it is a part. For example, consider an array where the first 49 dispense positions have satisfied the constraints SA (1 to 49) and then the algorithm discovers that dispense position 50 violates the constraint check. Thus, all patterns that start with this sub-pattern of 50 dispense positions, SA (1 to 50), would violate the constraint. This set of all patterns having the same sub-pattern consists of (768-50)?=718! patterns. Therefore, with the discovery of one constraint violation a large number of unsuitable patterns can be eliminated from consideration.


[0095] If the method determines that a particular neighbor QY satisfies the neighbor constraint check in block 780 the method continues to Block 790. In decision Block 790, if the variable Y is equal to the number of compounds in the neighborhood of M2 the method continues to Block 795 and an indication that no constraint violations for compound M at the dispense position SX is returned. However, if Y is less than the number of neighbors in the neighborhood of M2, the method returns to block 730 where Y is incremented and the neighbor constraints are checked for another neighbor of M2.


[0096] Specific parts, shapes, materials, functions and modules have been set forth, herein. However, a skilled technologist will realize that there are many ways to fabricate the system of the present invention, and that there are many parts, components, modules or functions that may be substituted for those listed above. While the above detailed description has shown, described, and pointed out the fundamental novel features of the invention as applied to various embodiments, it will be understood that various omissions and substitutions and changes in the form and details of the components illustrated may be made by those skilled in the art, without departing from the spirit or essential characteristics of the invention.


Claims
  • 1. An array of n unique materials, each of which appears in the array at least two times and which has a plurality of neighboring materials, wherein for each of the n materials in the array, the neighboring materials in one occurrence of the material are different from the neighboring materials of all other occurrences of the material, wherein n is greater than 25:
  • 2. The array of claim 1 wherein said materials are considered neighboring materials of a particular material if they are within a predetermined radius around said particular material.
  • 3. The array of claim 2 wherein said predetermined radius is in the range of about 1 mm to 1 cm.
  • 4. The array of claim 2 wherein said predetermined radius is about 3 mm.
  • 5. The array of claim 1 wherein said materials are considered neighboring materials of a particular material if they are within a predetermined dot-pitch distance from said particular material.
  • 6. The array of claim 4, wherein said predetermined dot-pitch distance is 1 dot pitch.
  • 7. The array of claim 4, wherein said predetermined dot-pitch distance is between 1 and 5 dot pitch distances.
  • 8. The array of claim 4, wherein said predetermined dot-pitch distance is greater than 5 dot pitch distances.
  • 9. The array of claim 1, wherein n is greater than 300.
  • 10. The array of claim 1, wherein n is greater than 4000.
  • 11. The array of claim 1, wherein n is greater than 9000.
  • 12. The array of claim 1, further in combination with a planar porous assay matrix, such that a surface of the porous assay matrix is in contact with each of the n materials of the array in such a manner that the materials can diffuse into the porous assay matrix.
  • 13. The array of claim 12 further comprising a substantially non porous assay matrix in contact with said porous assay matrix and containing at least one assay reagent capable of interacting with any of the materials on the porous assay matrix.
  • 14. The array of claim 12, in which the porous assay matrix contains at least one assay reagent capable of interacting with any of the materials in the array that is active in a test assay, wherein the test assay displays positive results (if any) within a time period t, during which time t the materials diffuse within the porous assay matrix to form a spot of diameter d, and wherein “neighboring materials” are within a predetermined distance of the center of the spot.
  • 15. The array of claim 12 further comprising a second porous assay matrix in contact with said porous assay matrix and containing at least one assay reagent capable of interacting with any of the materials in the array that is active in a test assay, wherein the test assay displays positive results (if any) within a time period t, during which time t the materials diffuse within the porous assay matrix and the second porous assay matrix to form a spot of diameter d on the second porous assay matrix and wherein “neighboring materials” are within a predetermined distance of the center of the spot.
  • 16. The array of claim 12, wherein “neighboring materials” include materials within a radius of about 3.5 mm.
  • 17. A method of testing a plurality of samples of different substances for their ability to enhance or inhibit a biological process, the method comprising: providing an array of at least two dots of each of said samples on a planar matrix such that each of said at least two dots is centered at its own distinct site, wherein at least one of said at least two dots of each of said samples is at least a predetermined distance from at least one of said dots of each of said plurality of samples; transferring the array from the planar matrix into a uniformly dispersed assay reagent; and observing the interaction of each of said substances with said assay reagent and correlating said interaction with an ability of each of said substances to enhance or inhibit said biological process.
  • 18. The method of claim 17, further comprising: providing a second array of at least two dots of each of said samples on a second planar matrix such that each of said at least two dots is centered at its own distinct site, wherein at least one of said at least two dots of each of said samples is at least a predetermined distance from at least one of said dots of each of said plurality of samples, and a pattern of placement of said dots on said second array is different than a pattern of placement of said dots on said first array; placing said uniformly dispersed assay reagent on said second planar matrix; and observing the interaction of each of said substances with said assay reagent and correlating said interaction with an ability of each of said substances to enhance or inhibit said biological process.
  • 19. The method of claim 17, further comprising placing a second uniformly dispersed assay reagent on said uniformly dispersed assay reagent, observing a second interaction of each of said substances with said second uniformly dispersed assay reagent, and correlating said second interaction with an ability of each of said substances to enhance or inhibit said biological process.
  • 20. The method of claim 19, further comprising placing a third uniformly dispersed assay reagent on said second uniformly dispersed assay reagent, observing a third interaction of each of said substances with said third uniformly dispersed assay reagent, and correlating said third interaction with an ability of each of said substances to enhance or inhibit said biological process.
  • 21. The method of claim 17, wherein said planar matrix comprises a plurality of alignment dots configured to diffuse into said uniformly dispersed assay reagent; said alignment dots on said uniformly dispersed assay reagent providing reference points for aligning said uniformly dispersed assay reagent with said planar matrix so that each particular interaction is correlated with each particular substance from which each interaction resulted.
  • 22. The method of claim 20, wherein said planar matrix comprises a plurality of alignment dots configured to diffuse into said uniformly dispersed assay reagent, said second uniformly dispersed assay reagent, and said third uniformly dispersed assay reagent; said alignment dots on said third uniformly dispersed assay reagent providing reference points for aligning said third uniformly dispersed assay reagent with said planar matrix so that each particular third interaction is correlated with each particular substance from which each third interaction resulted.
  • 23. A method of testing a plurality of samples of different substances for their ability to enhance or inhibit a biological process, the method comprising: depositing in an array at least one dot of each of said samples onto a plurality of planar matrixes such that each of said at least one dot is centered at its own distinct site, wherein at least one of said dots of each of said samples is at least a predetermined distance from at least one of said dots of each of said plurality of samples; transferring the array of samples from the plurality of planar matrixes into a uniformly dispersed assay reagent; and observing the interaction of each of said substances with said assay reagent and correlating said interaction with an ability of each of said substances to enhance or inhibit said biological process.
  • 24. A system for creating an array of sample compounds comprising: a relatively flat carrier configured to support a plurality of samples; and a dispensing mechanism configured to dispense at least two dots of each of said plurality of samples of different compounds on said flat carrier such that each of said at least two dots of each of said plurality of samples has a different set of neighboring compounds within a predetermined distance.
  • 25. The system of claim 24, wherein said samples are chemically bonded to said relatively flat carrier.
  • 26. The system of claim 24, wherein said samples are free to diffuse from said relatively flat carrier.
  • 27. The system of claim 24, wherein said dispensing mechanism simultaneously dispenses a portion of said plurality of samples in a first relative orientation on at least two locations on said flat container.
  • 28. The system of claim 27, wherein none of said samples in said portion of said plurality of samples are neighboring compounds.
  • 29. The system of claim 27, wherein said portion of said plurality of samples comprises twelve samples.
  • 30. The system of claim 24, wherein said flat carrier comprises a plurality of alignment dots configured to diffuse into a material brought into contact with the flat carrier and provide reference points for aligning said material brought into contact with the flat carrier with said flat carrier so that each particular diffused dot is correlated with each particular dot on said flat carrier from which said diffused dot resulted.
  • 31. An array of samples in which each sample appears at least twice and there are at least 768 dispenses of groups of 12 samples.
  • 32. An array of samples in which each sample appears at least twice and there are at least 4608 samples, wherein the array comprises 144 columns and 64 rows and the samples are arranged substantially according to the relative coordinates shown in Table 1.
  • 33. A method for performing an assay, comprising: providing a substantially planar substrate having an array of at least two dots of each of a plurality of test materials, wherein each of said dots has a plurality of neighboring test materials and is placed such that the neighboring materials in one occurrence of the material are different from the neighboring materials of all other occurrences of the material; and transferring the array of test materials into a uniformly-dispersed assay reagent that participates in indicating which of the test materials are active in the assay while maintaining the relative positioning of the test materials vis-a-vis each other.
  • 34. The method of claim 33, wherein transferring the array of test materials comprises contacting the array with the assay reagent and allowing the materials to diffuse into the assay reagent.
  • 35. The method of claim 33, wherein transferring the array of test materials comprises contacting the array with a non-porous surface carrying said uniformly dispersed assay reagent and allowing the materials to have surface reactions with said assay reagent.
  • 36. The method of claim 33, wherein transferring the array comprises transferring the materials into a first matrix, and then contacting the first matrix with the assay reagent.
  • 37. The method of claim 33, wherein transferring the array comprises contacting the array with a gel into which the materials can diffuse.
  • 38. The method of claim 33, wherein the uniformly-dispersed assay reagent is surface bound on a non-porous surface so that transferring the array comprises contacting the array with said non-porous surface.
  • 39. An algorithm for formulating an array S having A elements (SA), wherein the value of each element SA represents a dispense position on a card, wherein a dispensing mechanism dispenses a plurality of compounds at each dispense position, the algorithm comprising: (a) setting each of the A elements of the array S to a random, non-repeating value from 1- A, wherein each SA is set to a preliminary dispense position; (b) providing an array C having A elements (CA), wherein each of said A elements of the array C comprises J representations of compounds; (c) setting a counter x to zero; (d) incrementing x by 2; (e) determining whether each of said J compounds in CX satisfy a placement constraint with respect to certain other compounds in the array C; (f) if step (e) determines that there in a constraint violation with one or more of said J compounds in Cx; (1) decrementing x by 2; (2) determining if there are remaining dispense positions that have not been tested in SX against the constraints of step (e); (3) if step (2) determines that there are no remaining dispense positions that have not been tested in SX against the constraints of step (e), repeating steps (1) and (2); (4) changing the value of SX to a remaining dispense position that has not been tested in SX against the constraints of step (e); (5) return to step (e); (g) if step (e) determines that there is not a constraint violation with any of said J compounds in CX, return to step (d).
  • 40. The array of claim 39, wherein Cx and Cx+1 are equal and wherein x=any odd integer<A.
  • 41. A method for creating an array of a plurality of materials, each material occurring at least twice within the array and having different neighboring materials in each occurrence, the method comprising: (a) creating a candidate arrangement of materials containing pairs of n said materials in a spatial relationship; (b) testing whether a first occurrence and a second occurrence of each of said materials have different neighbors; (c) if the criteria of (b) is not satisfied, changing said spatial relationship of at least some of n said materials; and (d) repeating steps (b) and (c) until the criteria of (b) is satisfied.
  • 42. The method of claim 41, wherein said candidate arrangement created in step (a) comprises each of said plurality of materials such that when the criteria of (b) is satisfied, the array is complete.
  • 43. The method of claim 41, wherein said candidate arrangement created in step (a) comprises a portion of said plurality of materials, the method further comprising: (e) expanding said candidate arrangement of materials by increasing n by a predetermined number; (f) repeating steps (b)-(e) until a final candidate arrangement is created containing each of said plurality of materials.
  • 44. The method of claim 43, wherein said changing said spatial relationship of at least some of n said materials comprises: determining whether a placement of a nth material in every open location within said candidate arrangement fails to satisfy the criteria of (b); decrementing n if said nth material fails to satisfy the criteria of (b) in every open location within said candidate arrangement; and changing said spatial relationship of at least some of n said materials.
  • 45. A method for formulating an array S having A elements (SA), wherein the value of each element of SA represents a dispense position for one or more materials on a substrate, wherein each material occurs at least two times (C1 and C2) in SA, with the constraint that when the distance from one of C1 and C2 to any occurrence of any other material is less than or equal to a minimum value D, then the distance from the other of C1 and C2 to any occurrence of such other material is greater than D, comprising: tentatively assigning a plurality of elements to SA; for each first occurrence of a material, determining a set of Q materials that are within a distance of D; for each second occurrence of a material, ascertaining whether each of the Q materials are within a distance of D and, if so, changing the location of at least one material.
  • 46. A method for formulating an array containing pairs of materials, wherein each member of the pair has different neighboring materials than the other member of the pair, comprising: (a) tentatively assigning a plurality of materials to array locations; (b) testing to ascertain whether a first member of a pair has different neighboring materials than a second member of a pair, and if not, then (c) sequentially repeating step (a) with at least one altered material location and repeating step (b), until each member of each pair has different neighboring materials.
  • 47. The method of claim 46, wherein the testing step comprises measuring the distance from the first member of the pair to the tentative array locations of some or all of the other materials in the array, measuring the distance from the second member of the pair to the tentative array locations of some or all of the other materials in the array, and performing a comparison of data resulting from the measurements.
  • 48. The method of claim 47, wherein the data resulting from the measurements comprises a first set of materials located within a predetermined distance of the first member of the pair.
  • 49. The method of claim 48, wherein the data resulting from the measurements further comprises a second set of materials located within a predetermined distance of the first member.
  • 50. A method of creating an array of sample compounds comprising: providing a relatively flat carrier configured to support a plurality of samples; and dispensing at least two dots of each of said plurality of samples of different compounds on said flat carrier such that each of said at least two dots of each of said plurality of samples has a different set of neighboring compounds within a predetermined distance.
PRIORITY DATA

[0001] This application claims priority to U.S. Provisional Patent Application Serial No. 60/403,729, filed Aug. 13, 2002, which is incorporated herein by reference in its entirety.

Provisional Applications (1)
Number Date Country
60403729 Aug 2002 US