/*=========================================================================

  Program:   Visualization Toolkit
  Module:    TestLabelPlacementMapper2D.cxx

  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
  All rights reserved.
  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.

     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notice for more information.

=========================================================================*/

#include "vtkActor.h"
#include "vtkActor2D.h"
#include "vtkCamera.h"
#include "vtkIdTypeArray.h"
#include "vtkLabeledDataMapper.h"
#include "vtkLabelPlacementMapper.h"
#include "vtkLabelSizeCalculator.h"
#include "vtkMath.h"
#include "vtkPoints.h"
#include "vtkPointData.h"
#include "vtkPointSetToLabelHierarchy.h"
#include "vtkPolyData.h"
#include "vtkPolyDataMapper.h"
#include "vtkRegressionTestImage.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkSmartPointer.h"
#include "vtkStringArray.h"
#include "vtkTestUtilities.h"
#include "vtkTextProperty.h"

#define PTSMULT 10
#define TXTMULT ( PTSMULT * PTSMULT )
//#define GENERATE_TEST_POINTS

static const char* vtkTextLabelList[] =
{
  "Barbey",
  "Ozark",
  "Pennsylvania",
  "Gear",
  "Firm",
  "Beacon",
  "Hayes",
  "Harder",
  "Fortify",
  "Gudgeon",
  "Threadfin",
  "Surprise",
  "Cape May",
  "Tolovana",
  "Wilkes",
  "Billfish",
  "Plaice",
  "Minotaur",
  "Fitzgerald",
  "Specter",
  "Maloy",
  "Curb",
  "Whitehall",
  "Longview",
  "Hull",
  "Phoenix",
  "Abbot",
  "Newport",
  "Shannon",
  "Charrette",
  "Yarnall",
  "Muliphen",
  "Herndon",
  "Talbot",
  "Helios",
  "Lake Erie",
  "Carbonero",
  "Begor",
  "Reeves",
  "Potomac",
  "Miller",
  "Chilton",
  "Florida",
  "McInerney",
  "Dupont",
  "Laub",
  "Desplaines River",
  "Rincon",
  "Audacious",
  "Timber Hitch",
  "Heron",
  "Birmingham",
  "Cofer",
  "Koelsch",
  "Fremont",
  "Cape Douglas",
  "Cape Isabel",
  "Champion",
  "Des Moines",
  "Herald",
  "Crommelin",
  "Waccamaw",
  "Whale",
  "Marchand",
  "Aylwin",
  "Markab",
  "McLanahan",
  "Susquehanna",
  "Mobile",
  "Bulwark",
  "Ashland",
  "Bronx",
  "Mark",
  "Northern Light",
  "Melville",
  "Schuylkill",
  "Tippecanoe",
  "Yellowstone",
  "Gypsy",
  "Crosley",
  "Dash",
  "Rhode Island",
  "Memphis",
  "Khirirat",
  "Kearsarge",
  "Okinawa",
  "Bondia",
  "Sabine",
  "Acme",
  "Cushing",
  "Twin Falls",
  "Mendonca",
  "Lamoille River",
  "Benner",
  "Cape Trinity",
  "St. Louis",
  "Cronin",
  "Ozbourn",
  "Cape Gloucester",
  "Puffer",
  "Arcadia",
  "Gordon",
  "Ardent",
  "Yorktown",
  "Latona",
  "Kalamazoo",
  "Klondike",
  "Passumpsic",
  "Scorpion",
  "Carpellotti",
  "Hooper Island",
  "Higgins",
  "Chukawan",
  "Napa",
  "Lucid",
  "Bold",
  "Assertive",
  "Bronstein",
  "Kittiwake",
  "Allagash",
  "San Bernardino",
  "Pogy",
  "Leyte Gulf",
  "Inflict",
  "Gilmer",
  "Norwalk",
  "Satyr",
  "Dyess",
  "Gregory",
  "Avenger",
  "Wren",
  "Higbee",
  "Blandy",
  "Inchon",
  "Tattnall",
  "Spadefish",
  "Herkimer",
  "Williamson",
  "Tillamook",
  "Cheyenne",
  "Macon",
  "Gherardi",
  "Ward",
  "Bang",
  "Earheart",
  "Skate",
  "Cape John",
  "Union",
  "Atule",
  "Sailfish",
  "Nebraska",
  "Warbler",
  "Booth",
  "Deperm",
  "Fitch",
  "Grasp",
  "Laramie River",
  "Sea Leopard",
  "Gunason",
  "Preble",
  "Texas",
  "Sealift Antarctic",
  "Mauna Kea",
  "Ticonderoga",
  "Aldebaran",
  "Capricornus",
  "Hidatsa",
  "Grayling",
  "Myers",
  "Chauncey",
  "Monterey",
  "Misn Santa Clara",
  "Cape Cod",
  "Sylvania",
  "Caloosahatchee",
  "Ranger",
  "Guide",
  "Aeolus",
  "Atlas",
  "Shangri-la",
  "Petersburg",
  "Chewaucan",
  "Queenfish",
  "Curlew",
  "Mount Whitney",
  "Robinson",
  "Haraden",
  "Pyro",
  "Hartford",
  "Hepburn",
  "Albuquerque",
  "Hammerhead",
  "Starling",
  "Augusta",
  "Overton",
  "Worden",
  "McFaul",
  "Idaho",
  "Safeguard",
  "Umpqua",
  "Stanton",
  "Mispillion",
  "O'Kane",
  "Indra",
  "Manley",
  "Chatterer",
  "Engage",
  "Gettysburg",
  "Invincible",
  "Saipan",
  "Cape Henry",
  "Intrepid",
  "Furse",
  "Denver",
  "Dubuque",
  "Guest",
  "Accokeek",
  "Counsel",
  "Knapp",
  "Mount Baker",
  "Ingersoll",
  "Hancock",
  "Boyd",
  "Pinnacle",
  "Perkins",
  "Zeus",
  "Cape Vincent",
  "Chepachet",
  "Prairie",
  "Leftwich",
  "Chafee",
  "Observation Island",
  "Roanoke",
  "Hanson",
  "Brunswick",
  "Pinckney",
  "Swordfish",
  "Affray",
  "Rednour",
  "Cone",
  "Picking",
  "Hobby",
  "Sealift Mediteranean",
  "Yukon",
  "Whirlwind",
  "Shamal",
  "Firecrest",
  "Salinan",
  "Pope",
  "Scamp",
  "Owyhee",
  "Watertown",
  "Mahopac",
  "Philippine Sea",
  "Sequoia",
  "Wabash",
  "Atlantis",
  "Raton",
  "Peacock",
  "Askari",
  "Warrington",
  "Susanville",
  "Bridget",
  "Stringham",
  "Knudson",
  "Rodman",
  "Colhoun",
  "Tappahannock",
  "Alamo",
  "Omaha",
  "Bauer",
  "Shasta",
  "Soderman",
  "Loyal",
  "Vella Gulf",
  "Sentry",
  "Southerland",
  "Wyoming",
  "Louisiana",
  "Albacore",
  "Cavallaro",
  "Oldendorf",
  "Price",
  "Prevail",
  "Widgeon",
  "Register",
  "Vicksburg",
  "Scott",
  "Tortuga",
  "Knox",
  "Wilkinson",
  "Boulder",
  "Halibut",
  "Nimitz",
  "Neches",
  "Wagner",
  "Forster",
  "Rockingham",
  "Carr",
  "Short Splice",
  "Rockwall",
  "Gemini",
  "Noa",
  "Roosevelt",
  "Constitution",
  "Foote",
  "Lynch",
  "Kleinsmith",
  "Herbert",
  "Pegasus",
  "Salute",
  "Relentless",
  "Capps",
  "Norton Sound",
  "Limpkin",
  "Galveston",
  "Mountrail",
  "Douglas",
  "Copeland",
  "Harwood",
  "Rowe",
  "Grebe",
  "Frigate Bird",
  "Varian",
  "Kane",
  "Kilty",
  "San Marcos",
  "Ford",
  "Pioneer Valley",
  "Hawkins",
  "Dufilho",
  "Waldron",
  "Defender",
  "New York",
  "Chung-hoon",
  "Quick",
  "Escape",
  "Asterion",
  "Gary",
  "Sevier",
  "Antelope",
  "Seahorse",
  "Lang",
  "Betelgeuse",
  "San Juan",
  "Point Defiance",
  "Tallulah",
  "Yokes",
  "Saugatuck",
  "Effective",
  "Yosemite",
  "Sunfish",
  "Adventurous",
  "Bunker Hill",
  "Los Angeles",
  "Kiowa",
  "Sargo",
  "Jallao",
  "Mackenzie",
  "Nenville",
  "Marine Fiddler",
  "Arlington",
  "Caperton",
  "Navajo",
  "Brownson",
  "Tollberg",
  "Fort Marion",
  "Rushmore",
  "Salish",
  "Valcour",
  "Telamon",
  "Dallas",
  "Providence",
  "Frament",
  "Ottersetter",
  "Mack",
  "Irwin",
  "Plainview",
  "Nautilus",
  "Quillback",
  "Vega",
  "Loyalty",
  "Tidewater",
  "Sturgeon",
  "Sealift Arctic",
  "Atherton",
  "Fife",
  "Raven",
  "Atlanta",
  "Implicit",
  "Sunnyvale",
  "Rival",
  "Cape Edmont",
  "Trout",
  "Trumpetfish",
  "Algol",
  "Gendreau",
  "Bellerophon",
  "Coral Sea",
  "Menhaden",
  "Utina",
  "Cobia",
  "Vital",
  "Amick",
  "Kilo Moana",
  "Salem",
  "Ray",
  "French",
  "Perseus",
  "Eichenberger",
  "Swasey",
  "Corporal",
  "Muskingum",
  "Minnesota",
  "Zelima",
  "Mason",
  "Quirinus",
  "Nashville",
  "Mission Capistrano",
  "Chicago",
  "Wheatear",
  "Stethem",
  "Stockham",
  "Canon",
  "Pueblo",
  "Severn",
  "Somerset",
  "Haddo",
  "Dolphin",
  "Sims",
  "Lawrence",
  "Dickerson",
  "Samoset",
  "Alacrity",
  "Muir",
  "Conner",
  "Elkhorn",
  "Marsh",
  "Cape Intrepid",
  "Pivot",
  "Penobscot",
  "Triton",
  "Peconic",
  "Shadwell",
  "Clamp",
  "Skill",
  "Valley Forge",
  "Pollack",
  "Buchanan",
  "Coffman",
  "Snook",
  "Portsmouth",
  "Halyburton",
  "Benavidez",
  "Boise",
  "Vesuvius",
  "Sirago",
  "Pampanito",
  "Tabberer",
  "Pigeon",
  "McCandless",
  "Jeffers",
  "Fisher",
  "Runels",
  "South Carolina",
  "Endurance",
  "Finback",
  "Pinnebog",
  "Sigourney",
  "Pargo",
  "Towers",
  "O'Bannon",
  "Guadalupe",
  "Kansas",
  "La Jolla",
  "Bartlett",
  "Hunley",
  "Tolman",
  "Hoist",
  "Pearl Harbor",
  "Sealift China Sea",
  "Collett",
  "Nespelen",
  "Anchorage",
  "Columbia",
  "Saginaw",
  "Scranton",
  "Sutton",
  "Illusive",
  "Tench",
  "Cape Victory",
  "Trippe",
  "Fiske",
  "New Jersey",
  "Kline",
  "Georgia",
  "Oregon",
  "Piscataqua",
  "Henson",
  "Gallery",
  "Meteor",
  "Chandler",
  "Putnam",
  "Pollux",
  "Patuxent",
  "Hazelwood",
  "Apollo",
  "Fletcher",
  "Huse",
  "Moinester",
  "Wiltsie",
  "Gato",
  "Ouellet",
  "Red River",
  "Gearing",
  "Glennon",
  "Houston",
  "Flasher",
  "Bunch",
  "Barb",
  "Simpson",
  "Sterett",
  "Cahokia",
  "Gridley",
  "Tunxis",
  "Laning",
  "Stallion",
  "Cincinnati",
  "Miami",
  "O'Brien",
  "Sage",
  "Wheeling",
  "Hoel",
  "Tunny",
  "Acadia",
  "Mero",
  "San Francisco",
  "Vulcan",
  "Nimble",
  "Moana Wave",
  "Papago",
  "Glynn",
  "Holton",
  "Gravely",
  "Sanctuary",
  "Cape Rise",
  "Lander",
  "Bowers",
  "Makin Island",
  "Chanticleer",
  "Helena",
  "Conolly",
  "Shughart",
  "Arikara",
  "Nicholas",
  "Magnet",
  "Chickadee",
  "Tuscaloosa",
  "Skylark",
  "Esteem",
  "White Sands",
  "Nicholson",
  "Mount Vernon",
  "Francovich",
  "Peterson",
  "Hawes",
  "Cowpens",
  "Kankakee",
  "Falgout",
  "Chimariko",
  "Denebola",
  "Chancellorsville",
  "Willamette",
  "Supply",
  "Illinois",
  "Plymouth Rock",
  "Deyo",
  "Harkness",
  "Henley",
  "Sealion",
  "Pickerel",
  "Toledo",
  "Talledega",
  "Wiseman",
  "Coastal Crusader",
  "Tunica",
  "McNair",
  "Massachusetts",
  "Gilliland",
  "Southern Cross",
  "Marshfield",
  "Mataco",
  "Grand Canyon",
  "Aries",
  "Ponchatoula",
  "Cape Taylor",
  "Fahrion",
  "Mullinnix",
  "Hill",
  "Tigrone",
  "Tautog",
  "Fort Mandan",
  "Grenadier",
  "Caliente",
  "McMorris",
  "Henrico",
  "Gosselin",
  "Prime",
  "Hilbert",
  "Fabius",
  "Indiana",
  "Reid",
  "Hickox",
  "Guitarro",
  "Kretchmer",
  "Leary",
  "Iwo Jima",
  "Carney",
  "Daniel",
  "Shakamayon",
  "Chain",
  "Besugo",
  "Wright",
  "Sealift Indian Ocean",
  "Greenfish",
  "Whitemarsh",
  "Velocity",
  "Alexandria",
  "Anzio",
  "De Steiguer",
  "Biddle",
  "Colorado",
  "Libra",
  "Gillespie",
  "Truckee",
  "Kirkpatrick",
  "Pluck",
  "Blueback",
  "Roselle",
  "Hyades",
  "Evans",
  "Cape Ray",
  "Sharps",
  "Parche",
  "Swenning",
  "Bellatrix",
  "Gantner",
  "Wickes",
  "Chatelain",
  "Darter",
  "Upshur",
  "Cread",
  "Niagara Falls",
  "Lamar",
  "Berkeley",
  "Rutland",
  "Lapon",
  "Canberra",
  "South Dakota",
  "Durant",
  "Persistent",
  "Pasadena",
  "Gallup",
  "Acree",
  "Tatum",
  "Burdo",
  "Canopus",
  "Edwards",
  "Laboon",
  "Silversides",
  "Wisconsin",
  "Regulus",
  "Connecticut",
  "Trepang",
  "Tonawanda",
  "Consolation",
  "Conquest",
  "Tinsman",
  "McKean",
  "Hoquiam",
  "Bradford",
  "McConnell",
  "Condor",
  "Tiru",
  "Sprig",
  "Cape Lambert",
  "Aggressive",
  "Tawakoni",
  "Ampere",
  "Dextrous",
  "McNulty",
  "Yano",
  "Enright",
  "Alatna",
  "Brewton",
  "America",
  "Opportune",
  "Concord",
  "Agile",
  "Point Loma",
  "Volador",
  "Waxsaw",
  "White Plains",
  "Contender",
  "Wyman",
  "Cape Bover",
  "Cascade",
  "Kennebec",
  "Sierra",
  "Provo",
  "Dorchester",
  "Roper",
  "Portland",
  "Coghlan",
  "Cape Knox",
  "Briscoe",
  "Kellar",
  "Cook",
  "Davidson",
  "Recovery",
  "Hayter",
  "Rupertus",
  "Mississinewa",
  "Hector",
  "Big Black River",
  "Threat",
  "Zephyr",
  "Cromwell",
  "Suribachi",
  "Clamagore",
  "Thornhill",
  "Barry",
  "Coolbaugh",
  "Smoky Hill River",
  "Maury",
  "Cleveland",
  "Chattahoochee",
  "Hudson",
  "Sunbird",
  "Bremerton",
  "Riley",
  "Mahan",
  "Rochester",
  "Edenton",
  "Boxer",
  "Bexar",
  "Worthy",
  "Michigan",
  "Pilot",
  "O'Hare",
  "Hercules",
  "Cape Hudson",
  "Whippoorwill",
  "Yancey",
  "Cape Diamond",
  "Pride",
  "Batfish",
  "Ross",
  "Monticello",
  "Collingsworth",
  "Laffey",
  "Rigel",
  "Doyle",
  "Goldsborough",
  "Norfolk",
  "Barney",
  "Bryce Canyon",
  "Flint",
  "Cotten",
  "Bray",
  "Sarpedon",
  "Maine",
  "Ramsey",
  "Pavlic",
  "Comstock",
  "Seadragon",
  "Uhlmann",
  "Bridge",
  "Meade",
  "Bowen",
  "Fresno",
  "Abatan",
  "Venture",
  "Pledge",
  "Sea Devil",
  "Dennis",
  "New Mexico",
  "Little Rock",
  "Vireo",
  "Cape Washington",
  "Shawnee Trail",
  "Balduck",
  "Cole",
  "Kephart",
  "Mitscher",
  "Moore",
  "Advance",
  "Midas",
  "Washington",
  "McCampbell",
  "Gansevoort",
  "Peoria",
  "Reaper",
  "Bushnell",
  "Chipola",
  "Mount McKinley",
  "Camden",
  "Hollis",
  "Cabildo",
  "Stoddard",
  "Estocin",
  "Quincy",
  "Coucal",
  "Wahoo",
  "Ashtabula",
  "Lexington",
  "Scout",
  "Dace",
  "Tercel",
  "Catamount",
  "Tripoli",
  "Aludra",
  "Comet",
  "Isle Royale",
  "Marias",
  "Shrike",
  "Magoffin",
  "Baltimore",
  "Thomaston",
  "New Orleans",
  "Cadmus",
  "Fearless",
  "Redpoll",
  "Mercy",
  "Rappahannock",
  "Hemminger",
  "Colonial",
  "Lewis And Clark",
  "Savage",
  "Rankin",
  "Kyne",
  "Sumner",
  "Tomich",
  "Sam Houston",
  "Owen",
  "Exultant",
  "Hammann",
  "Winston",
  "Devastator",
  "Flyer",
  "Namakagon",
  "Surfbird",
  "Oklahoma",
  "Clark",
  "Newman",
  "Vancouver",
  "Davison",
  "Barber",
  "Dixon",
  "Tuscarora",
  "Cape Borda",
  "Jacksonville",
  "Brittin",
  "Welch",
  "Kitty Hawk",
  "Truett",
  "Greeneville",
  "Compass Island",
  "Ainsworth",
  "Impervious",
  "Mount Hood",
  "Freedom.",
  "Arneb",
  "Bataan",
  "Gallatin",
  "Preserver",
  "Tempest",
  "Capella",
  "Taussig",
  "Zumwalt",
  "Mapiro",
  "Black Hawk",
  "Vesole",
  "Cape Orlando",
  "Hart",
  "Witter",
  "Stafford",
  "Gonzalez",
  "Franks",
  "Spokane",
  "Kingman",
  "Indomitable",
  "Tekesta",
  "Cape Florida",
  "Brule",
  "Rogers",
  "Scribner",
  "Gallant",
  "Swerve",
  "Ajax",
  "Nitro",
  "Tullibee",
  "Jason",
  "Shakori",
  "Kauffman",
  "Cape Flattery",
  "Rooks",
  "Blair",
  "Tarawa",
  "Decatur",
  "Princeton",
  "Arizona",
  "Trathen",
  "Hale",
  "Misn Buenaventura",
  "Patriot",
  "Sea Dog",
  "Mender",
  "Quapaw",
  "Semmes",
  "Pickaway",
  "Navasota",
  "Parker",
  "Jicarilla",
  "Chikaskia",
  "Sam Rayburn",
  "Noxubee",
  "Dale",
  "Carpenter",
  "Abraham Lincoln",
  "Okanogan",
  "Salt Lake City",
  "Charleston",
  "Eldorado",
  "Reasoner",
  "Rentz",
  "Washburn",
  "Patterson",
  "Cape Race",
  "Mirfak",
  "Sculpin",
  "Connole",
  "Donner",
  "Baton Rouge",
  "Durham",
  "Gurke",
  "Rhodes",
  "Picuda",
  "Briareus",
  "Germantown",
  "Hitchiti",
  "Cape Johnson",
  "Bollinger",
  "Cape Gibson",
  "Schenectady",
  "Austin",
  "Liddle",
  "Genesee",
  "Flatley",
  "Luiseno",
  "Bates",
  "Louisville",
  "Shea",
  "Tulare",
  "Spangler",
  "Deliver",
  "Aquila",
  "Permit",
  "Ready",
  "Stevens",
  "Vigor",
  "Kilauea",
  "Guardian",
  "Cape Ann",
  "Corbesier",
  "Utah",
  "Hamner",
  "Frederick",
  "North Dakota",
  "Olympia",
  "Schmitt",
  "Bluefish",
  "Gage",
  "Monsoon",
  "Agerholm",
  "Boyle",
  "Duncan",
  "Red Cloud",
  "Pittsburgh",
  "Fort Fisher",
  "Blackfin",
  "Woolsey",
  "Stark",
  "Klakring",
  "Dominant",
  "Hailey",
  "De Haven",
  "Thrush",
  "Shark",
  "Seminole",
  "Paiute",
  "Annapolis",
  "Clemson",
  "Schley",
  "Maumee",
  "Cape Farewell",
  "Hampton",
  "Capitaine",
  "El Paso",
  "Gyre",
  "Jacana",
  "Pathfinder",
  "Sides",
  "Shoup",
  "Nipmuc",
  "Eunice",
  "Snyder",
  "Parks",
  "Merrick",
  "Navigator",
  "Embattle",
  "Sacagawea",
  "Farquhar",
  "Bannock",
  "Hurricane",
  "Roncador",
  "Nantahala",
  "Goodrich",
  "Waters",
  "Hulbert",
  "Lagarto",
  "Norman Scott",
  "Raymond",
  "Blessman",
  "Molala",
  "Sand Lance",
  "Marietta",
  "Alabama",
  "Meredith",
  "Sample",
  "Megara",
  "Claxton",
  "Porterfield",
  "Gurnard",
  "Hank",
  "Detroit",
  "Plunkett",
  "Vreeland",
  "Exploit",
  "Barrett",
  "Stalwart",
  "Moosbrugger",
  "Delong",
  "Thresher",
  "Mellette",
  "Comfort",
  "Trenton",
  "Grand Rapids",
  "Macdonough",
  "Delta",
  "Cockrill",
  "Clinton",
  "Spot",
  "Carronade",
  "Tornado",
  "Kingbird",
  "Squall",
  "Sisler",
  "Tutuila",
  "Brooks",
  "Hollister",
  "Burke",
  "Cabot",
  "Trumpeter",
  "Kirwin",
  "Corry",
  "Aspro",
  "Puget Sound",
  "Saint Paul",
  "Lake Champlain",
  "Springfield",
  "Portage",
  "Whipple",
  "Brown",
  "Pinto",
  "Luce",
  "Benicia",
  "Pecos",
  "Eltanin",
  "Cape Horn",
  "Fort Snelling",
  "Kinzer",
  "Converse",
  "Chambers",
  "Merrimack",
  "Thach",
  "Hanna",
  "Defiance",
  "Butte",
  "Little",
  "Wantuck",
  "Gray",
  "Juneau",
  "Jarrett",
  "Sigsbee",
  "Hurst",
  "Lassen",
  "Hunt",
  "Port Royal",
  "Walke",
  "Antares",
  "McCook",
  "Bullard",
  "Ringness",
  "Bennington",
  "Cossatot",
  "Benham",
  "Cape Kennedy",
  "Conserver",
  "Tirante",
  "Cooner",
  "Midway",
  "Razorback",
  "Horne",
  "Plunger",
  "Hall",
  "Mars",
  "Griffin",
  "Chara",
  "San Diego",
  "Ortolan",
  "Taconic",
  "Kinkaid",
  "Dutton",
  "Coates",
  "Superior",
  "Mizar",
  "Somers",
  "McKee",
  "McCloy",
  "Coronado",
  "Raleigh",
  "Seneca",
  "Benfold",
  "Terry",
  "Buck",
  "Bassett",
  "Charlton",
  "Texas",
  "Constant",
  "Kirk",
  "Mauna Loa",
  "Kraken",
  "Hermitage",
  "Sealift Pacific",
  "Capodanno",
  "Archerfish",
  "Morton",
  "Michelson",
  "Cape Jacob",
  "Laramie",
  "Vindicator",
  "Vandivier",
  "Cusabo",
  "Brooke",
  "Big Horn",
  "Leahy",
  "Remora",
  "Maine",
  "New Hampshire",
  "Gatling",
  "Callaghan",
  "McCaffery",
  "Integrity",
  "California",
  "Petrel",
  "Adria",
  "Mosopelea",
  "Lowry",
  "Warrior",
  "Mount Washington",
  "Tusk",
  "Grapple",
  "Repose",
  "Mosley",
  "Delaware",
  "Cocopa",
  "Pecatonica",
  "Cape Alexander",
  "Fulton",
  "Wyandot",
  "Parrot",
  "Glomar Explorer",
  "Typhoon",
  "Sausalito",
  "Adroit",
  "Thornback",
  "Oriole",
  "Forrestal",
  "Takelma",
  "Boston",
  "Saratoga",
  "Isherwood",
  "Blue Ridge",
  "Pintado",
  "Halsey",
  "Breton",
  "Growler",
  "Heermann",
  "Cape Texas",
  "Challenge",
  "Whidbey Island",
  "Sturtevant",
  "Moctobi",
  "Scabbard Fish",
  "Stewart",
  "Stockdale",
  "Sandoval",
  "Cowell",
  "Range Sentinel",
  "Tombigbee",
  "Burns",
  "Marathon",
  "Falcon",
  "Barbel",
  "Taylor",
  "Kamehameha",
  "Chowanoc",
  "Brumby",
  "Vogelgesang",
  "Mississippi",
  "Capable",
  "Kalmia",
  "Niobrara",
  "Keywadin",
  "Chesapeake",
  "Currituck",
  "Green Bay",
  "Amberjack",
  "Pililaau",
  "Lockwood",
  "Pomeroy",
  "Chloris",
  "Greenlet",
  "Lester",
  "Howard",
  "Key West",
  "West Virginia",
  "Hopping",
  "Thunderbolt",
  "Bradley",
  "Kershaw",
  "Montana",
  "Cape Mendocino",
  "Kite",
  "Shreveport",
  "Pensacola",
  "Kanawha",
  "Levy",
  "Strong",
  "Suamico",
  "Powhatan",
  "Hewitt",
  "Santa Fe",
  "La Salle",
  "Kiska",
  "Ordronaux",
  "Detector",
  "Petaluma",
  "Sarasota",
  "Oriskany",
  "Sphinx",
  "Woodpecker",
  "Pocono",
  "Chosin",
  "Hooper",
  "Racine",
  "Antietam",
  "Remey",
  "Tang",
  "Pelican",
  "Mount Katmai",
  "Mesa Verde",
  "Aulick",
  "Kingsbury",
  "Vance",
  "Humphreys",
  "Cape Ducato",
  "New",
  "Randolph",
  "Joyce",
  "Pascagoula",
  "Sway",
  "Van Valkenburgh",
  "Sarsfield",
  "Blenny",
  "Groton",
  "Tennessee",
  "Weber",
  "Watts",
  "Damato",
  "Mission Buenaventura",
  "Placerville",
  "Chauvenet",
  "Lavallette",
  "Arkansas",
  "Daly",
  "Dewey",
  "Procyon",
  "Chase",
  "Victoria",
  "Shenandoah",
  "Milwaukee",
  "Flying Fish",
  "Carib",
  "Palmyra",
  "Bainbridge",
  "Thuban",
  "Alaska",
  "Sealift Atlantic",
  "Charlotte",
  "Frontier",
  "Meyerkord",
  "Huntsville",
  "Topeka",
  "Narragansett",
  "Tatnuck",
  "Tanner",
  "Davis",
  "Mohawk",
  "Cavalla",
  "Guam",
  "Antrim",
  "Keith",
  "Altair",
  "Bergall",
  "Paul",
  "Seawolf",
  "Mockingbird",
  "Rendova",
  "San Antonio",
  "Current",
  "Robin",
  "Honolulu",
  "Kingsport",
  "Olmsted",
  "Haddock",
  "Oswald",
  "Vermont",
  "Thorn",
  "Ringgold",
  "North Carolina",
  "Mobile Bay",
  "Fanning",
  "McFarland",
  "Tacoma",
  "Dahlgren",
  "Bolster",
  "Narwhal",
  "Diachenko",
  "Enterprise",
  "Sioux",
  "Bennett",
  "Mansfield",
  "Tucson",
  "Dyson",
  "Seattle",
  "Broadbill",
  "American Cormorant",
  "Sea Poacher",
  "Pelias",
  "American Explorer",
  "Upham",
  "Ohio",
  "Cape Domingo",
  "Kishwaukee",
  "Ruddy",
  "Titan",
  "Norris",
  "Hopper",
  "Blue",
  "Rommel",
  "Neunzer",
  "Fort Mchenry",
  "Glover",
  "Cape Wrath",
  "Piedmont",
  "Rich",
  "Belknap",
  "Canisteo",
  "Renshaw",
  "Silverstein",
  "Van Voorhis",
  "Rowan",
  "Edson",
  "Tinosa",
  "Garcia",
  "O'Callahan",
  "Lodestone",
  "Sumter",
  "Walsh",
  "Major",
  "Ogden",
  "Merrill",
  "Wichita",
  "Swallow",
  "Force",
  "Endymion",
  "Ramsden",
  "Ramage",
  "Holder",
  "England",
  "Sands",
  "Rolf",
  "Sampson",
  "Haines",
  "Logan",
  "High Point",
  "Dashiell",
  "Drum",
  "Cape St. George",
  "Chief",
  "Hanford",
  "Epperson",
  "Lindsey",
  "Fidelity",
  "Ingraham",
  "Barr",
  "Robison",
  "Watkins",
  "Pictor",
  "Atakapa",
  "Lowndes",
  "Arcturus",
  "Sellers",
  "Greene",
  "New York City",
  "Lipan",
  "Wadleigh",
  "Kidd",
  "Cape Mohican",
  "Finch",
  "Edmonds",
  "Skipjack",
  "Littlehales",
  "Lizardfish",
  "Krishna",
  "Hayler",
  "Malabar",
  "Crockett",
  "Montpelier",
  "Blakely",
  "Bancroft",
  "Cormorant",
  "Northhampton",
  "Von Steuben",
  "Tawasa",
  "Spruance",
  "Camp",
  "Nassau",
  "Shoshone",
  "Ricketts",
  "Nereus",
  "Savannah",
  "Fentress",
  "Peleliu",
  "Neptune",
  "Cape Fear",
  "Choctaw",
  "Sabalo",
  "Jouett",
  "Laws",
  "Ault",
  "Salmon",
  "Arctic",
  "Elliot",
  "Cardinal",
  "McClelland",
  "Vanguard",
  "Oak Hill",
  "Willis",
  "Triumph",
  "Poole",
  "Sirius",
  "Manitowoc",
  "Bulkeley",
  "Schroeder",
  "Cutlass",
  "Seay",
  "Nevada",
  "Cape Lobos",
  "Everglades",
  "Iowa",
  "Power",
  "Fox",
  "Chickasaw",
  "Sagamore",
  "Pharris",
  "Bearss",
  "Redstone",
  "Bull",
  "Bittern",
  "Pitt",
  "Tenacious",
  "Lofberg",
  "Inch",
  "Jack",
  "Stein",
  "King",
  "Essex",
  "Florikan",
  "Mulberry",
  "Holland",
  "Cobbler",
  "Great Sitkin",
  "Hue City",
  "Rathburne",
  "Normandy",
  "Gillette",
  "Whitley",
  "Shoveler",
  "Voge",
  "Columbus",
  "Momsen",
  "Paricutin",
  "Indianapolis",
  "Straub",
  "Anthony",
  "Lavsan Island",
  "Conflict",
  "Phoebe",
  "Rose Knot",
  "Long Beach",
  "Egeria",
  "Frybarger",
  "Bagley",
  "Pettit",
  "Hummingbird",
  "Crosby",
  "Porter",
  "Amphion",
  "Maryland",
  "Duluth",
  "Rainier",
  "Henderson",
  "Cape Breton",
  "Calcaterra",
  "Cache",
  "Oflaherty",
  "Bingham",
  "Saturn",
  "Hawaii",
  "Tecumseh",
  "Observer",
  "Elrod",
  "Missouri",
  "Shelton",
  "Bon Homme Richard",
  "Osterhaus",
  "Asheboro",
  "Courtney",
  "Hodges",
  "Wadsworth",
  "Truxtun",
  "Independence",
  "Casa Grande",
  "Ponce",
  "Santa Barbara",
  "Haleakala",
  "Direct",
  "Downes",
  "Doran",
  "Marshall",
  "Braine",
  "Bigelow",
  "Cape Decision",
  "Purdy",
  "Sangay",
  "Nitze",
  "Ruchamkin",
  "Lloyd",
  "Cape Nome",
  "Shiloh",
  "Bausell",
  "Vandegrift",
  "Bonefish",
  "Mustin",
  "Valdez",
  "Newport News",
  "Sirocco",
  "Cohoes",
  "Aventinus",
  "Rizzi",
  "Gladiator",
  "Orleck",
  "Taluga",
  "St. Croix",
  "Thor",
  "Furman",
  "Victorious",
  "Strong Virginian",
  "Wandank",
  "Sealift Caribbean",
  "Colleton",
  "Coontz",
  "McCord",
  "Osprey",
  "Osmus",
  "Kawishiwi",
  "Beaufort",
  "Hyde",
  "Underwood",
  "Sperry",
  "Wrangell",
  "Maddox",
  "Kimberly",
  "Neosho",
  "Basilone",
  "Jarvis",
  "Catawba",
  "Williamsburg",
  "Curtiss",
  "Thrasher",
  "Kingfisher",
  "Dortch",
  "Erben",
  "Jenks",
  "Knorr",
  "Millicoma",
  "Entemedor",
  "Dynamic",
  "Schofield",
  "Virginia",
  "Cree",
  "Cimarron",
  "Cable",
  "Guadalcanal",
  "Asheville",
  "San Jose",
  "Haven",
  "Amesbury",
  "Pomfret",
  "Valor",
  "Blue Bird",
  "Sacramento",
  "Patapsgo",
  "Chevalier",
  "Sealift Arabian Sea",
  "Cape Blanco",
  "Eversole",
  "Greenville Victory",
  "Hassayampa",
  "Chinook",
  "Cape Avinof",
  "Hammerberg",
  "Watson",
  "Holt",
  "Spica",
  "Russell",
  "Lafayette",
  "Greenling",
  "Cochrane",
  "Woodrow Wilson",
  "Bordelon",
  "Cape Girardeau",
  "Becuna",
  "Misn Santa Ynez",
  "Bell",
  "Platte",
  "Strickland",
  "Stribling",
  "Massey",
  "Navarro",
  "Milius",
  "Firedrake",
  "Aucilla",
  "Stump",
  "Guardfish",
  "Excel",
  "Roark",
  "Borum",
  "Buffalo",
  "Lansing",
  "Stout",
  "Frankford",
  "Bottineau",
  "Energy",
  "Albany",
  "Waddell",
  "Cape Inscription",
  "Belet",
  "Grayback",
  "Trigger",
  "Steinaker",
  "Achelous",
  "Assurance",
  "Perry",
  "Cruise",
  "Vermillion",
  "San Jacinto",
  "Diamond Head",
  "Lardner",
  "Fanshaw Bay",
  "Pawcatuck",
  "Hawkbill",
  "Notable",
  "Constellation",
  "Estes",
  "Curts",
  "Kentucky",
  "Cape Juby",
  "Corpus Christi Bay",
  "Meadowlark",
  "Parsons",
  "Sturdy",
  "Swift",
  "Osberg",
  "Taurus",
  "Minneapolis-Saint Paul",
  "Healy",
  "Dahl",
  "Melvin",
  "Hornet",
  "Leader",
  "Salvor",
  "Soubarissen",
  "Monongahela",
  "Wainwright",
  "Black",
  "Johnston",
  "Monssen",
  "McClusky",
  "Dent",
  "Cayuga",
  "Conyngham",
  "Durkik",
  "Abnaki",
  "Tringa",
  "De Wert",
  "Cape Island",
  "Pioneer",
  "Weiss",
  "Odum",
  "Reclaimer",
  "Comte De Grasse",
  "Brock",
  "Wasp",
  "Geiger",
  "Vincennes",
  "Stembel",
  "McGowan",
  "Chehalis",
  "Janssen",
  "Impeccable",
  "Dixie",
  "Baya",
  "Stockton",
  "Ute",
  "Whetstone",
  "Muskogee",
  "Hissem",
  "Farragut",
  "Broad Kill River",
  "Boone",
  "Philadelphia",
  "Orion",
  "Nodaway",
  "Firebolt",
  "Bowditch",
  "Loy",
  "Benson",
  "Cape Archway",
  "Apache",
  "Enhance",
  "Mills",
  "Cyclone",
  "Able",
  "Moale",
  "Achomawi",
  "Caron",
  "Nervous Energy",
  "Prosthetic Conscience",
  "The Ends Of Invention",
  "Eschatologist",
  "Irregular Apocalyse",
  "No More Mr Nice Guy",
  "Determinist",
  "Bora Horza Gobuchul",
  "Profit Margin",
  "Trade Surplus",
  "Revisionist",
  "Screw Loose",
  "Flexible Demeanour",
  "Just Read The Instructions",
  "Of Course I Still Love You",
  "Limiting Factor",
  "Cargo Cult",
  "Little Rascal",
  "So Much For Subtlety",
  "Unfortunate Conflict Of Evidence",
  "Youthful Indiscretion",
  "Gunboat Diplomat",
  "Zealot",
  "Prime Mover",
  "Just Testing",
  "Xenophobe",
  "Very Little Gravitas Indeed",
  "Congenital Optimist",
  "Size Isn't Everything",
  "Sweet and Full of Grace",
  "Different Tan",
  "Fate Amenable To Change",
  "Grey Area",
  "It's Character Forming",
  "Jaundiced Outlook",
  "Problem Child",
  "Reasonable Excuse",
  "Recent Convert",
  "Tactical Grace",
  "Unacceptable Behaviour",
  "Steely Glint",
  "Highpoint",
  "Shoot Them Later",
  "Attitude Adjuster",
  "Killing Time",
  "Frank Exchange Of Views",
  "Death and Gravity",
  "Ethics Gradient",
  "Honest Mistake",
  "No Fixed Abode",
  "Quietly Confident",
  "Sleeper Service",
  "Uninvited Guest",
  "Use Psychology",
  "What Is The Answer and Why?",
  "Wisdom Like Silence",
  "Yawning Angel",
  "Zero Gravitas",
  "Misophist",
  "Serious Callers Only",
  "Not Invented Here",
  "Appeal To Reason",
  "Break Even",
  "Long View",
  "Peace Makes Plenty",
  "Sober Counsel",
  "Within Reason",
  "Full Refund",
  "Charitable View",
  "Just Passing Through",
  "Added Value",
  "I Blame Your Mother",
  "I Blame My Mother",
  "Heavy Messing",
  "Bad for Business",
  "Arbitrary",
  "Cantankerous",
  "Only Slightly Bent",
  "I Thought He Was With You",
  "Space Monster",
  "A Series Of Unlikely Explanations",
  "Never Talk To Strangers",
  "Funny, It Worked Last Time...",
  "Boo!",
  "It'll Be Over By Christmas",
  "A Ship With A View",
  "Ablation",
  "Arrested Development",
  "Credibility Problem",
  "Dramatic Exit",
  "Excuses And Accusations",
  "Halation Effect",
  "Happy Idiot Talk",
  "Helpless In The Face Of Your Beauty",
  "Just Another Victim Of The Ambient Morality",
  "Minority Report",
  "Not Wanted On Voyage",
  "Perfidy",
  "Sacrificial Victim",
  "Stranger Here Myself",
  "Synchronize Your Dogmas",
  "Thank you And Goodnight",
  "The Precise Nature Of The Catastrope",
  "Unwitting Accomplice",
  "Undesirable Alien",
  "Well I Was In The Neighbourhood",
  "You Would If You Really Loved Me",
  "You'll Thank Me Later",
  "Winter Storm",
  "Piety",
  "Nuisance Value",
  "Vulgarian",
  "Sanctioned Parts List",
  "Resistance Is Character-Forming",
  "Someone Else's Problem",
  "Lacking That Small Match Temperament",
  "Poke It With A Stick",
  "But Who's Counting?",
  "Germane Riposte",
  "We Haven't Met But You're A Great Fan Of Mine",
  "All The Same, I Saw It First",
  "Zero Credibility",
  "Charming But Irrational",
  "Demented But Determined",
  "You May Not Be The Coolest Person Here",
  "Lucid Nonsense",
  "Awkward Customer",
  "Thorough But ... Unreliable",
  "Advanced Case Of Chronic Patheticism",
  "Another Fine Product From The Nonsense Factory",
  "Conventional Wisdom",
  "In One Ear",
  "Fine Till You Came Along",
  "I Blame The Parents",
  "Inappropriate Response",
  "A Momentary Lapse Of Sanity",
  "Reformed Nice Guy",
  "Pride Comes Before A Fall",
  "Injury Time",
  "Now Look What You've Made Me Do",
  "Kiss This Then",
  "Experiencing A Significant Gravitas Shortfall",
  "Hairier Legs Than Mine"
};

static unsigned int vtkTextLabelListLength =
  sizeof(vtkTextLabelList) / sizeof(vtkTextLabelList[0]);

// This random array happens to be the same length as the
// vtkTextLabelList array. Make sure it remains at least
// that long!
static double vtkLabelPlacer2DTestPoints[] =
{
   0.00921164, 0.819977, 0.347464, 0.831205, 0.0670384, 0.714962,
   0.371513, 0.0237718, 0.53187, 0.133539, 0.381945, 0.35307,
   0.0462124, 0.691374, 0.924344, 0.457128, 0.942825, 0.0607652,
   0.280221, 0.673314, 0.380992, 0.331482, 0.225509, 0.123754,
   0.93843, 0.195171, 0.242676, 0.662619, 0.631243, 0.30133,
   0.447617, 0.107093, 0.907174, 0.865733, 0.368378, 0.331684,
   0.615594, 0.295142, 0.451003, 0.00361544, 0.764768, 0.461687,
   0.571292, 0.699818, 0.837362, 0.551284, 0.434063, 0.30029,
   0.979631, 0.656224, 0.164354, 0.290287, 0.860508, 0.565351,
   0.854881, 0.978975, 0.63096, 0.541449, 0.137936, 0.284214,
   0.77669, 0.823447, 0.675641, 0.501772, 0.277766, 0.410558,
   0.252085, 0.792617, 0.518522, 0.802662, 0.332251, 0.135308,
   0.125279, 0.563129, 0.512682, 0.652736, 0.533406, 0.948849,
   0.302287, 0.530752, 0.340962, 0.555047, 0.676284, 0.31189,
   0.926874, 0.972603, 0.536253, 0.809922, 0.361924, 0.849495,
   0.470372, 0.540795, 0.144947, 0.123148, 0.740687, 0.720296,
   0.0190669, 0.458023, 0.986429, 0.919463, 0.406779, 0.738743,
   0.0489612, 0.891708, 0.928413, 0.837712, 0.431541, 0.904269,
   0.047463, 0.7111, 0.459614, 0.74045, 0.745189, 0.398016,
   0.447616, 0.0806239, 0.046374, 0.408533, 0.213632, 0.512887,
   0.0956262, 0.19025, 0.53053, 0.623171, 0.633394, 0.457661,
   0.905121, 0.375017, 0.914485, 0.744035, 0.988009, 0.473073,
   0.944365, 0.944494, 0.103906, 0.352722, 0.195195, 0.646345,
   0.118655, 0.242551, 0.557834, 0.516189, 0.584005, 0.374389,
   0.350099, 0.118398, 0.921871, 0.885747, 0.75278, 0.981625,
   0.163932, 0.208981, 0.338259, 0.114224, 0.756866, 0.649797,
   0.140211, 0.525654, 0.663248, 0.216916, 0.70975, 0.760232,
   0.222778, 0.225644, 0.397588, 0.269708, 0.987455, 0.158755,
   0.19194, 0.938443, 0.408902, 0.408133, 0.488362, 0.907696,
   0.641816, 0.00403692, 0.848517, 0.0237265, 0.77128, 0.896673,
   0.389918, 0.357299, 0.127779, 0.580769, 0.987407, 0.347348,
   0.880217, 0.801059, 0.397824, 0.232027, 0.675761, 0.510065,
   0.66343, 0.269865, 0.627837, 0.0623407, 0.759489, 0.73345,
   0.0917873, 0.668824, 0.930535, 0.497226, 0.870253, 0.34634,
   0.9444, 0.525171, 0.550098, 0.489602, 0.741733, 0.311525,
   0.795485, 0.717851, 0.925502, 0.91302, 0.123419, 0.311028,
   0.447825, 0.592253, 0.999612, 0.471759, 0.858625, 0.910176,
   0.330858, 0.733188, 0.698071, 0.486099, 0.85826, 0.771814,
   0.875937, 0.878095, 0.143901, 0.551986, 0.227157, 0.832514,
   0.0589326, 0.479662, 0.681143, 0.969573, 0.61705, 0.754182,
   0.530348, 0.556987, 0.284907, 0.426953, 0.791037, 0.957813,
   0.960302, 0.792472, 0.0846935, 0.44438, 0.700365, 0.0345829,
   0.235323, 0.0732833, 0.672021, 0.660814, 0.295711, 0.0214549,
   0.593233, 0.466199, 0.399559, 0.389259, 0.283942, 0.205167,
   0.233713, 0.00605129, 0.704013, 0.344583, 0.408559, 0.644951,
   0.69193, 0.260538, 0.85767, 0.865751, 0.682889, 0.309238,
   0.371072, 0.609343, 0.235205, 0.0974772, 0.299716, 0.319199,
   0.776657, 0.268534, 0.251848, 0.817612, 0.607462, 0.615124,
   0.388897, 0.188194, 0.973502, 0.649598, 0.80185, 0.687508,
   0.94625, 0.627194, 0.24633, 0.0624264, 0.200598, 0.44407,
   0.47779, 0.210866, 0.0257956, 0.547, 0.43066, 0.100981,
   0.188088, 0.201565, 0.705136, 0.223273, 0.54574, 0.247097,
   0.953654, 0.062951, 0.0173391, 0.418538, 0.364271, 0.306433,
   0.227732, 0.485644, 0.213744, 0.395716, 0.799009, 0.940637,
   0.286018, 0.101311, 0.739645, 0.216207, 0.784382, 0.107851,
   0.657926, 0.756327, 0.58172, 0.961214, 0.129855, 0.477344,
   0.727918, 0.115796, 0.186343, 0.866525, 0.689947, 0.930856,
   0.90311, 0.572044, 0.343724, 0.974073, 0.240767, 0.571992,
   0.476226, 0.931022, 0.680039, 0.41542, 0.95733, 0.837931,
   0.113644, 0.0136078, 0.705817, 0.673267, 0.592869, 0.344679,
   0.0139583, 0.596819, 0.744855, 0.786149, 0.802779, 0.306765,
   0.803879, 0.792016, 0.404912, 0.359009, 0.865855, 0.41963,
   0.728268, 0.992515, 0.201468, 0.0800923, 0.111556, 0.923455,
   0.509654, 0.762779, 0.0343794, 0.814362, 0.985321, 0.296453,
   0.477599, 0.00686788, 0.428397, 0.0621733, 0.946402, 0.185493,
   0.581593, 0.841356, 0.673021, 0.464169, 0.294535, 0.249103,
   0.682175, 0.314733, 0.713871, 0.0270751, 0.0506227, 0.815833,
   0.70577, 0.869459, 0.00433748, 0.900063, 0.352159, 0.737701,
   0.541624, 0.0688405, 0.00203305, 0.169404, 0.170001, 0.211147,
   0.746419, 0.0631366, 0.137243, 0.642403, 0.869911, 0.595023,
   0.559254, 0.375682, 0.0795518, 0.0264484, 0.518231, 0.916675,
   0.554188, 0.243873, 0.765219, 0.0423473, 0.730576, 0.792922,
   0.648394, 0.561278, 0.396737, 0.950779, 0.738713, 0.5514,
   0.376826, 0.320054, 0.155575, 0.754422, 0.573998, 0.185987,
   0.886725, 0.190613, 0.639591, 0.600613, 0.502161, 0.825737,
   0.158697, 0.222926, 0.718742, 0.891539, 0.100699, 0.445629,
   0.695, 0.859704, 0.0479826, 0.443325, 0.957508, 0.845057,
   0.877982, 0.246555, 0.846006, 0.828898, 0.281032, 0.297567,
   0.204121, 0.654834, 0.796263, 0.789383, 0.155419, 0.121702,
   0.445907, 0.356049, 0.110197, 0.0868531, 0.739943, 0.21512,
   0.521189, 0.628481, 0.880739, 0.575577, 0.725925, 0.627795,
   0.353866, 0.432755, 0.317263, 0.247245, 0.447425, 0.869152,
   0.830387, 0.320623, 0.718499, 0.804688, 0.383108, 0.902432,
   0.182611, 0.136, 0.750474, 0.215184, 0.591007, 0.0548935,
   0.594651, 0.29671, 0.810676, 0.0348111, 0.0706352, 0.166363,
   0.0601629, 0.157963, 0.880405, 0.970715, 0.807409, 0.1207,
   0.603239, 0.642915, 0.477015, 0.198298, 0.801575, 0.0688153,
   0.578266, 0.924327, 0.164226, 0.141104, 0.531582, 0.299034,
   0.859453, 0.833444, 0.686721, 0.71348, 0.455766, 0.0567995,
   0.629921, 0.0849518, 0.78454, 0.770007, 0.499638, 0.417882,
   0.341394, 0.802555, 0.535003, 0.797639, 0.91909, 0.146834,
   0.844283, 0.865188, 0.207738, 0.455267, 0.67565, 0.654128,
   0.923888, 0.779365, 0.794203, 0.172428, 0.997002, 0.620205,
   0.791694, 0.998441, 0.791884, 0.198072, 0.991197, 0.0551287,
   0.548681, 0.686498, 0.97595, 0.795811, 0.201553, 0.50752,
   0.894122, 0.511354, 0.331266, 0.580909, 0.343496, 0.14078,
   0.0844368, 0.130024, 0.310811, 0.800275, 0.222249, 0.338755,
   0.449925, 0.892724, 0.0107553, 0.76407, 0.72211, 0.494464,
   0.449709, 0.263527, 0.0968643, 0.997694, 0.234835, 0.867734,
   0.00958032, 0.0163636, 0.0235464, 0.744157, 0.0532865, 0.585373,
   0.366023, 0.751856, 0.451885, 0.835524, 0.657834, 0.219885,
   0.609302, 0.546782, 0.770557, 0.744365, 0.536295, 0.504919,
   0.180586, 0.113317, 0.519387, 0.337012, 0.158611, 0.779157,
   0.285274, 0.599727, 0.617612, 0.209508, 0.199102, 0.304128,
   0.479338, 0.238858, 0.48553, 0.299312, 0.542745, 0.914331,
   0.155917, 0.493773, 0.837866, 0.0149391, 0.0812193, 0.0526611,
   0.0744966, 0.0642446, 0.759306, 0.655511, 0.173542, 0.718922,
   0.923952, 0.863631, 0.0393725, 0.733765, 0.386279, 0.193276,
   0.397368, 0.559571, 0.709759, 0.922136, 0.345001, 0.432944,
   0.492868, 0.625549, 0.596143, 0.37073, 0.866338, 0.54319,
   0.40084, 0.91561, 0.654851, 0.0878107, 0.835067, 0.964881,
   0.756416, 0.0910349, 0.0236578, 0.616241, 0.155286, 0.889653,
   0.39488, 0.74058, 0.927173, 0.00181209, 0.455839, 0.278754,
   0.0193973, 0.0107221, 0.205588, 0.317085, 0.254277, 0.634945,
   0.526232, 0.388287, 0.940925, 0.127504, 0.95551, 0.259219,
   0.691616, 0.990652, 0.888024, 0.0220513, 0.616558, 0.489927,
   0.202958, 0.117015, 0.678102, 0.862607, 0.838234, 0.195321,
   0.762525, 0.752729, 0.121225, 0.425655, 0.98228, 0.177356,
   0.815212, 0.259758, 0.752869, 0.468697, 0.395982, 0.26504,
   0.532525, 0.15147, 0.753942, 0.503235, 0.867334, 0.277134,
   0.79102, 0.679656, 0.975773, 0.823716, 0.200355, 0.363995,
   0.671924, 0.0218781, 0.704421, 0.199723, 0.751807, 0.613478,
   0.718432, 0.682089, 0.865853, 0.386227, 0.324988, 0.069,
   0.682705, 0.229523, 0.593749, 0.137033, 0.115043, 0.525719,
   0.7651, 0.0274955, 0.116245, 0.736355, 0.923831, 0.83261,
   0.667971, 0.596602, 0.0905437, 0.767496, 0.298924, 0.0112172,
   0.527085, 0.711858, 0.191575, 0.808815, 0.750152, 0.808579,
   0.78774, 0.54182, 0.369166, 0.566529, 0.644536, 0.720082,
   0.425793, 0.302579, 0.448482, 0.636293, 0.18167, 0.321279,
   0.736586, 0.80744, 0.64538, 0.896556, 0.423715, 0.38186,
   0.913895, 0.825426, 0.939886, 0.668885, 0.955374, 0.97597,
   0.120379, 0.205165, 0.215837, 0.573743, 0.901457, 0.787682,
   0.568188, 0.542169, 0.242026, 0.733524, 0.344679, 0.027177,
   0.764144, 0.962245, 0.446222, 0.646643, 0.128831, 0.262236,
   0.394522, 0.736542, 0.0553103, 0.600864, 0.713883, 0.228737,
   0.38481, 0.49817, 0.743719, 0.682866, 0.925692, 0.0986886,
   0.659319, 0.16819, 0.773473, 0.766871, 0.803692, 0.653477,
   0.989573, 0.757097, 0.531301, 0.569316, 0.496407, 0.113476,
   0.193845, 0.956127, 0.631733, 0.536838, 0.636711, 0.208716,
   0.892044, 0.576015, 0.0840899, 0.2993, 0.343266, 0.279186,
   0.287465, 0.41921, 0.666519, 0.183198, 0.00804122, 0.148758,
   0.167705, 0.611713, 0.0583549, 0.77102, 0.5288, 0.544969,
   0.293798, 0.865103, 0.783871, 0.522395, 0.888173, 0.518327,
   0.514851, 0.0966784, 0.873086, 0.956759, 0.243296, 0.0722611,
   0.491732, 0.539038, 0.604535, 0.424859, 0.609011, 0.639555,
   0.998937, 0.140084, 0.399777, 0.0538551, 0.143248, 0.574415,
   0.195534, 0.338995, 0.496542, 0.374546, 0.986991, 0.356131,
   0.489446, 0.122795, 0.821478, 0.586519, 0.624206, 0.0248468,
   0.600499, 0.583496, 0.810822, 0.49154, 0.308485, 0.699421,
   0.171174, 0.924855, 0.0448304, 0.463923, 0.157493, 0.979678,
   0.442047, 0.479048, 0.353873, 0.544304, 0.125358, 0.889902,
   0.587755, 0.400586, 0.65567, 0.847538, 0.577308, 0.81636,
   0.560954, 0.957543, 0.424162, 0.885078, 0.506765, 0.203868,
   0.407863, 0.947065, 0.316899, 0.119981, 0.513088, 0.462405,
   0.642105, 0.850453, 0.571522, 0.574653, 0.196272, 0.746303,
   0.114379, 0.359533, 0.672782, 0.445712, 0.0856751, 0.940817,
   0.313289, 0.443916, 0.900691, 0.921835, 0.282882, 0.39696,
   0.703656, 0.34427, 0.148683, 0.912136, 0.267437, 0.807726,
   0.447656, 0.746437, 0.360625, 0.0201081, 0.956305, 0.620076,
   0.610485, 0.416885, 0.588588, 0.406305, 0.762131, 0.129899,
   0.214142, 0.089907, 0.0676436, 0.885713, 0.172557, 0.164625,
   0.852161, 0.26415, 0.573579, 0.137027, 0.0101539, 0.656283,
   0.142571, 0.198427, 0.96973, 0.24534, 0.431885, 0.687674,
   0.73754, 0.842411, 0.395701, 0.549277, 0.701355, 0.675792,
   0.0342518, 0.669867, 0.44753, 0.637723, 0.213601, 0.988912,
   0.64071, 0.413929, 0.904198, 0.856626, 0.31587, 0.820605,
   0.912327, 0.480646, 0.225101, 0.279947, 0.0618994, 0.343151,
   0.341565, 0.688027, 0.675962, 0.901458, 0.801628, 0.968527,
   0.0308536, 0.556561, 0.124741, 0.529949, 0.860683, 0.501069,
   0.46844, 0.0689622, 0.0473451, 0.728806, 0.0424824, 0.00202327,
   0.00517529, 0.981055, 0.589066, 0.432051, 0.475427, 0.497677,
   0.458177, 0.572692, 0.239243, 0.963525, 0.968087, 0.6464,
   0.0496256, 0.0570642, 0.0777251, 0.325331, 0.845197, 0.22648,
   0.448332, 0.113064, 0.267234, 0.409798, 0.475404, 0.117331,
   0.984748, 0.665244, 0.760132, 0.541321, 0.98955, 0.372141,
   0.582115, 0.610333, 0.872368, 0.89137, 0.248347, 0.97259,
   0.312904, 0.984524, 0.897239, 0.892031, 0.358951, 0.883536,
   0.585689, 0.681858, 0.979857, 0.454432, 0.63678, 0.353597,
   0.897382, 0.300572, 0.718638, 0.154625, 0.787838, 0.200869,
   0.0125718, 0.293938, 0.216802, 0.784604, 0.832029, 0.914414,
   0.548893, 0.246995, 0.251137, 0.858669, 0.65797, 0.50344,
   0.310514, 0.800876, 0.330099, 0.970595, 0.790804, 0.0419046,
   0.29108, 0.180723, 0.408486, 0.422676, 0.909404, 0.354949,
   0.631967, 0.475216, 0.950923, 0.163346, 0.35278, 0.172458,
   0.506875, 0.0440273, 0.967224, 0.137235, 0.511867, 0.951143,
   0.853855, 0.733703, 0.350929, 0.059283, 0.369295, 0.733619,
   0.931922, 0.811377, 0.812722, 0.41955, 0.371339, 0.102345,
   0.106312, 0.77887, 0.460701, 0.998689, 0.96114, 0.877034,
   0.302832, 0.694757, 0.778628, 0.40528, 0.536855, 0.928917,
   0.303574, 0.172353, 0.73734, 0.481666, 0.359481, 0.801057,
   0.372255, 0.498073, 0.113173, 0.100084, 0.112865, 0.930204,
   0.933076, 0.211311, 0.498131, 0.0917588, 0.1905, 0.735537,
   0.166749, 0.55014, 0.211092, 0.815809, 0.299362, 0.375197,
   0.931167, 0.116012, 0.815055, 0.625073, 0.608793, 0.981823,
   0.498271, 0.436703, 0.674121, 0.957778, 0.377926, 0.802581,
   0.981458, 0.370764, 0.424695, 0.84361, 0.551341, 0.391972,
   0.86787, 0.293041, 0.139121, 0.210377, 0.799898, 0.88631,
   0.212372, 0.338473, 0.715974, 0.367734, 0.508309, 0.141473,
   0.737682, 0.213511, 0.47861, 0.00450534, 0.721273, 0.43634,
   0.566219, 0.447929, 0.338747, 0.314725, 0.577434, 0.928814,
   0.583041, 0.168083, 0.97452, 0.753964, 0.875543, 0.251453,
   0.177916, 0.236446, 0.949907, 0.0832262, 0.783154, 0.473801,
   0.173318, 0.947677, 0.599206, 0.860656, 0.0522033, 0.381676,
   0.836918, 0.0863289, 0.929439, 0.0762689, 0.85215, 0.0770687,
   0.294291, 0.147405, 0.4374, 0.38824, 0.142181, 0.643921,
   0.387538, 0.344055, 0.5329, 0.454014, 0.608583, 0.446777,
   0.983971, 0.602353, 0.747934, 0.520915, 0.0168086, 0.502151,
   0.650684, 0.0529897, 0.598685, 0.091241, 0.48674, 0.640578,
   0.198699, 0.527877, 0.0369948, 0.771979, 0.652357, 0.171514,
   0.643161, 0.603586, 0.470164, 0.041782, 0.230624, 0.0957006,
   0.439706, 0.143794, 0.746043, 0.751005, 0.148812, 0.0823411,
   0.906862, 0.629939, 0.377337, 0.904768, 0.429238, 0.209917,
   0.0691044, 0.437636, 0.342372, 0.241961, 0.632065, 0.11099,
   0.400947, 0.720527, 0.899553, 0.787215, 0.728491, 0.745173,
   0.123967, 0.520426, 0.804662, 0.953355, 0.0309477, 0.138764,
   0.198606, 0.9687, 0.947303, 0.324086, 0.914426, 0.74971,
   0.375101, 0.328099, 0.362405, 0.932515, 0.777202, 0.428321,
   0.790647, 0.396576, 0.255612, 0.0706103, 0.746596, 0.0308958,
   0.266507, 0.18058, 0.999936, 0.93145, 0.882709, 0.69415,
   0.580188, 0.223542, 0.0643723, 0.904459, 0.242477, 0.303118,
   0.509531, 0.694356, 0.0438888, 0.639365, 0.800605, 0.776044,
   0.973204, 0.632293, 0.95124, 0.494371, 0.895627, 0.804935,
   0.548036, 0.840997, 0.644502, 0.142105, 0.360139, 0.849535,
   0.136239, 0.77581, 0.0457593, 0.0763716, 0.577246, 0.767869,
   0.575014, 0.268134, 0.524638, 0.591049, 0.763532, 0.683678,
   0.580608, 0.286871, 0.444323, 0.730161, 0.821138, 0.865952,
   0.0510293, 0.648668, 0.166321, 0.362818, 0.877964, 0.934987,
   0.32666, 0.181021, 0.41928, 0.833845, 0.438913, 0.808663,
   0.191884, 0.999466, 0.0312313, 0.903997, 0.480135, 0.62562,
   0.794477, 0.779162, 0.375246, 0.75814, 0.0563962, 0.851424,
   0.891263, 0.458934, 0.304246, 0.467643, 0.677011, 0.528844,
   0.282628, 0.124944, 0.933536, 0.934755, 0.432823, 0.448362,
   0.614539, 0.55101, 0.820818, 0.482607, 0.178068, 0.794612,
   0.0490282, 0.0168655, 0.458525, 0.436858, 0.267757, 0.186155,
   0.714885, 0.0803502, 0.445635, 0.788235, 0.869374, 0.574186,
   0.342346, 0.813608, 0.305844, 0.320495, 0.561927, 0.304089,
   0.825367, 0.941281, 0.104807, 0.494289, 0.512387, 0.684721,
   0.107786, 0.558031, 0.830194, 0.0765543, 0.647624, 0.620611,
   0.610175, 0.218689, 0.505082, 0.907356, 0.931008, 0.458482,
   0.712175, 0.526264, 0.911347, 0.00592003, 0.498002, 0.919777,
   0.691997, 0.390916, 0.123487, 0.453647, 0.438743, 0.946872,
   0.0842719, 0.357353, 0.0239921, 0.235965, 0.864062, 0.291255,
   0.122107, 0.255404, 0.570916, 0.388485, 0.265786, 0.062965,
   0.253328, 0.677464, 0.131551, 0.983861, 0.758241, 0.761989,
   0.750057, 0.203524, 0.623534, 0.735528, 0.0241604, 0.0631783,
   0.837726, 0.669055, 0.813063, 0.157781, 0.825304, 0.879735,
   0.713837, 0.455202, 0.584443, 0.73494, 0.14063, 0.567422,
   0.656592, 0.349956, 0.707298, 0.549327, 0.531717, 0.572038,
   0.247726, 0.531563, 0.985885, 0.769474, 0.553292, 0.177642,
   0.630777, 0.460802, 0.707616, 0.89487, 0.0771614, 0.852388,
   0.084882, 0.611759, 0.832453, 0.0421072, 0.695613, 0.170867,
   0.768483, 0.899263, 0.919816, 0.352675, 0.416378, 0.0579712,
   0.321833, 0.0506232, 0.824505, 0.449639, 0.0801564, 0.188684,
   0.206162, 0.958938, 0.863136, 0.72373, 0.729258, 0.641762,
   0.0897057, 0.683342, 0.92075, 0.0523174, 0.298628, 0.0450572,
   0.275921, 0.399501, 0.419564, 0.620453, 0.950141, 0.0237171,
   0.612569, 0.441868, 0.46959, 0.391274, 0.140971, 0.30743,
   0.969635, 0.649755, 0.428403, 0.163822, 0.359195, 0.987418,
   0.529507, 0.422236, 0.514933, 0.479645, 0.389478, 0.950822,
   0.473507, 0.239715, 0.893711, 0.60499, 0.0731942, 0.175549,
   0.451881, 0.75766, 0.98838, 0.702535, 0.49914, 0.0455373,
   0.345612, 0.697478, 0.511227, 0.184978, 0.920965, 0.651148,
   0.845901, 0.0627834, 0.200684, 0.88935, 0.29805, 0.334505,
   0.0283577, 0.607199, 0.185681, 0.736168, 0.777623, 0.510238,
   0.572844, 0.784919, 0.128337, 0.955633, 0.316161, 0.716171,
   0.692642, 0.232997, 0.972922, 0.907827, 0.85005, 0.785575,
   0.15699, 0.534399, 0.645617, 0.887973, 0.169517, 0.0737578,
   0.646575, 0.985438, 0.249077, 0.234976, 0.245518, 0.425761,
   0.758537, 0.730677, 0.487926, 0.576399, 0.539538, 0.00770798,
   0.547989, 0.0434513, 0.286201, 0.181747, 0.618445, 0.204207,
   0.100357, 0.694195, 0.336787, 0.376135, 0.697685, 0.988662,
   0.449619, 0.744538, 0.453715, 0.58313, 0.66533, 0.205694,
   0.0969426, 0.314981, 0.886108, 0.821934, 0.247885, 0.201161,
   0.920034, 0.0116909, 0.489241, 0.680625, 0.266111, 0.520527,
   0.499134, 0.93679, 0.628046, 0.561526, 0.567643, 0.384214,
   0.483071, 0.966206, 0.0206604, 0.239224, 0.642895, 0.127983,
   0.0075606, 0.0710209, 0.648882, 0.75778, 0.00149435, 0.115476,
   0.811326, 0.949771, 0.799953, 0.817304, 0.421498, 0.12518,
   0.901067, 0.227228, 0.0172774, 0.380839, 0.768941, 0.596764,
   0.80674, 0.877635, 0.415229, 0.750052, 0.126199, 0.0301871,
   0.354945, 0.560857, 0.322873, 0.520966, 0.868247, 0.629661,
   0.709291, 0.0594918, 0.87921, 0.880081, 0.517583, 0.0119911,
   0.533986, 0.70272, 0.611507, 0.598513, 0.203326, 0.305991,
   0.787899, 0.217319, 0.482807, 0.535158, 0.402685, 0.929562,
   0.156354, 0.833944, 0.103996, 0.867703, 0.490997, 0.190983,
   0.859292, 0.127766, 0.363368, 0.130728, 0.142708, 0.496852,
   0.592738, 0.149546, 0.426678, 0.171656, 0.0145037, 0.764167,
   0.349157, 0.279854, 0.506956, 0.415403, 0.676152, 0.0798168,
   0.481233, 0.0903182, 0.977279, 0.126579, 0.420942, 0.771996,
   0.931986, 0.885147, 0.665718, 0.71415, 0.710789, 0.23455,
   0.0877166, 0.25317, 0.0209904, 0.786273, 0.89177, 0.978563,
   0.709663, 0.309278, 0.0376205, 0.288146, 0.873681, 0.953263,
   0.487024, 0.416221, 0.425486, 0.139876, 0.888844, 0.807481,
   0.328896, 0.749284, 0.214529, 0.591131, 0.140574, 0.625964,
   0.581443, 0.318933, 0.306978, 0.380037, 0.274316, 0.43402,
   0.57434, 0.929016, 0.973354, 0.154067, 0.399647, 0.863262,
   0.847885, 0.400338, 0.482259, 0.322011, 0.0392475, 0.633512,
   0.431604, 0.971433, 0.882565, 0.274808, 0.698353, 0.217107,
   0.925041, 0.166659, 0.0460845, 0.542042, 0.0962001, 0.834309,
   0.233045, 0.792656, 0.175757, 0.951496, 0.800393, 0.197437,
   0.319575, 0.0987195, 0.178418, 0.675064, 0.807679, 0.654171,
   0.656248, 0.559429, 0.317833, 0.817173, 0.224011, 0.945025,
   0.0387007, 0.443186, 0.632357, 0.0205023, 0.581601, 0.961561,
   0.961909, 0.806313, 0.701911, 0.0211029, 0.676318, 0.872993,
   0.397057, 0.340572, 0.998811, 0.0242412, 0.421828, 0.66621,
   0.997383, 0.0173153, 0.0174285, 0.921091, 0.778066, 0.94982,
   0.631959, 0.336486, 0.31209, 0.303405, 0.320541, 0.340408,
   0.236338, 0.13116, 0.411253, 0.929145, 0.145594, 0.993317,
   0.679243, 0.0419781, 0.525698, 0.39834, 0.903667, 0.939637,
   0.473873, 0.385552, 0.96722, 0.0631664, 0.63824, 0.902373,
   0.189006, 0.624568, 0.121189, 0.829035, 0.593614, 0.872434,
   0.998355, 0.347716, 0.0561768, 0.163514, 0.180885, 0.141431,
   0.0236819, 0.0210987, 0.605067, 0.35297, 0.366204, 0.789771,
   0.685882, 0.619809, 0.127642, 0.281828, 0.682904, 0.573191,
   0.614515, 0.15444, 0.669555, 0.205326, 0.917234, 0.945925,
   0.168098, 0.219117, 0.704457, 0.808678, 0.444026, 0.752387,
   0.367896, 0.235297, 0.642223, 0.833726, 0.430878, 0.763745,
   0.267553, 0.759168, 0.342827, 0.888683, 0.101819, 0.268619,
   0.677743, 0.818772, 0.0967181, 0.541309, 0.784648, 0.58131,
   0.0791748, 0.691229, 0.493325, 0.320912, 0.57325, 0.615437,
   0.653703, 0.789816, 0.429348, 0.0519935, 0.855224, 0.75111,
   0.906622, 0.601096, 0.617832, 0.908219, 0.431627, 0.356976,
   0.697085, 0.90419, 0.721152, 0.396757, 0.292478, 0.678543,
   0.279767, 0.0415861, 0.93764, 0.91365, 0.722366, 0.807537,
   0.267066, 0.578562, 0.891317, 0.358395, 0.547624, 0.920507,
   0.960723, 0.869138, 0.605035, 0.821552, 0.818851, 0.432789,
   0.883274, 0.191621, 0.579931, 0.905342, 0.0897643, 0.667938,
   0.0321878, 0.979876, 0.778475, 0.82736, 0.436357, 0.847444,
   0.99527, 0.504789, 0.989915, 0.502576, 0.789257, 0.0372353,
   0.813954, 0.132271, 0.073794, 0.255693, 0.439951, 0.255698,
   0.516094, 0.986839, 0.800273, 0.193972, 0.0927261, 0.447896,
   0.789797, 0.122727, 0.66453, 0.749911, 0.756242, 0.151795,
   0.218094, 0.503858, 0.346341, 0.957039, 0.958699, 0.852693,
   0.209565, 0.160822, 0.930611, 0.77254, 0.084369, 0.989197,
   0.442047, 0.479275, 0.168469, 0.456859, 0.426212, 0.340152,
   0.937572, 0.76488, 0.342747, 0.547134, 0.683402, 0.93792,
   0.624029, 0.055538, 0.426753, 0.435465, 0.868071, 0.6672,
   0.63111, 0.0661186, 0.255324, 0.227074, 0.429496, 0.542728,
   0.624763, 0.389293, 0.852457, 0.241635, 0.159922, 0.810284,
   0.448906, 0.758837, 0.776525, 0.0568491, 0.462146, 0.287192,
   0.832081, 0.790435, 0.836596, 0.661919, 0.877703, 0.561088,
   0.197614, 0.301422, 0.996002, 0.806175, 0.375327, 0.125133,
   0.104162, 0.655026, 0.0165555, 0.248457, 0.810526, 0.515534,
   0.582783, 0.83557, 0.417297, 0.515309, 0.794163, 0.496934,
   0.970508, 0.324847, 0.698808, 0.85818, 0.424512, 0.777246,
   0.177485, 0.982341, 0.204833, 0.62219, 0.148877, 0.176788,
   0.282694, 0.2338, 0.470435, 0.608015, 0.900814, 0.976093,
   0.189976, 0.926324, 0.731633, 0.555979, 0.336951, 0.135955,
   0.999456, 0.849033, 0.704289, 0.988234, 0.250549, 0.97319,
   0.409304, 0.17658, 0.787531, 0.0360684, 0.200807, 0.962899,
   0.445792, 0.430989, 0.62891, 0.0901475, 0.108343, 0.924966,
   0.911169, 0.0171861, 0.847466, 0.359337, 0.379618, 0.238293,
   0.989412, 0.0556066, 0.580665, 0.235412, 0.56117, 0.584001,
   0.299827, 0.189592, 0.466494, 0.362064, 0.212276, 0.728612,
   0.787566, 0.619775, 0.552122, 0.519039, 0.489931, 0.277089,
   0.0429447, 0.771714, 0.196657, 0.209507, 0.176734, 0.369129,
   0.959327, 0.416781, 0.836765, 0.513958, 0.0892318, 0.71897,
   0.726789, 0.141476, 0.788929, 0.522948, 0.18226, 0.245569,
   0.281144, 0.181092, 0.614366, 0.654095, 0.371612, 0.683807,
   0.749037, 0.0672187, 0.744127, 0.546263, 0.0413061, 0.23083,
   0.56171, 0.659177, 0.783597, 0.919417, 0.648068, 0.0709468,
   0.402212, 0.971968, 0.874117, 0.277312, 0.785311, 0.722022,
   0.015992, 0.777689, 0.617716, 0.959093, 0.471641, 0.873905,
   0.71633, 0.354781, 0.811633, 0.123267, 0.750201, 0.625855,
   0.752804, 0.383196, 0.367842, 0.318063, 0.676528, 0.401175,
   0.552717, 0.509055, 0.688833, 0.224237, 0.755739, 0.708512,
   0.9638, 0.592141, 0.117769, 0.342138, 0.314509, 0.944605,
   0.98139, 0.215795, 0.867147, 0.143792, 0.716773, 0.799678,
   0.184907, 0.730848, 0.357394, 0.722582, 0.430472, 0.950727,
   0.860681, 0.458486, 0.771335, 0.820404, 0.531977, 0.942267,
   0.68555, 0.0322665, 0.302251, 0.929311, 0.925019, 0.797247,
   0.330946, 0.215229, 0.351323, 0.687936, 0.140491, 0.239726,
   0.0822563, 0.481845, 0.361011, 0.515877, 0.347397, 0.703418,
   0.340229, 0.232429, 0.428853, 0.732093, 0.294161, 0.957297,
   0.29738, 0.0616925, 0.865214, 0.658506, 0.505713, 0.519787,
   0.0671259, 0.185694, 0.952661, 0.375919, 0.0646607, 0.752793,
   0.19224, 0.977349, 0.303806, 0.0719589, 0.41335, 0.167529,
   0.667464, 0.0686066, 0.0712313, 0.183771, 0.641323, 0.723738,
   0.868661, 0.592844, 0.931705, 0.159491, 0.570783, 0.153344,
   0.257332, 0.983394, 0.903501, 0.149364, 0.358569, 0.464872,
   0.104886, 0.82215, 0.871212, 0.461711, 0.982419, 0.511367,
   0.540543, 0.901364, 0.229812, 0.445307, 0.280365, 0.0986663,
   0.283849, 0.642804, 0.608141, 0.0267921, 0.295477, 0.086513,
   0.0241103, 0.222305, 0.286231, 0.677633, 0.984239, 0.113026,
   0.631365, 0.359125, 0.809792, 0.170063, 0.24501, 0.888233,
   0.526199, 0.81967, 0.194465, 0.378425, 0.188825, 0.588352,
   0.430893, 0.0111055, 0.650885, 0.420982, 0.438896, 0.529989,
   0.525862, 0.160759, 0.875984, 0.660975, 0.000387218, 0.50797,
   0.458504, 0.0720393, 0.7653, 0.399667, 0.197636, 0.668345,
   0.882124, 0.850495, 0.269462, 0.851524, 0.567695, 0.247768,
   0.231076, 0.701851, 0.0175667, 0.243433, 0.380555, 0.983891,
   0.261555, 0.957145, 0.728327, 0.993508, 0.884572, 0.000801061,
   0.463429, 0.85312, 0.389586, 0.769193, 0.831667, 0.824669,
   0.206712, 0.212163, 0.831587, 0.474636, 0.201333, 0.805295,
   0.60113, 0.191717, 0.17961, 0.703088, 0.7952, 0.920303,
   0.524446, 0.361725, 0.509851, 0.0600288, 0.904524, 0.336603,
   0.285901, 0.133574, 0.982799, 0.903679, 0.133613, 0.637952,
   0.0634623, 0.61074, 0.699146, 0.541673, 0.903186, 0.851014,
   0.985987, 0.484615, 0.928026, 0.328396, 0.348537, 0.868114,
   0.39434, 0.675469, 0.600998, 0.980431, 0.0983345, 0.708539,
   0.410976, 0.266742, 0.139063, 0.234726, 0.0361525, 0.615635,
   0.969626, 0.509123, 0.825888, 0.691788, 0.874974, 0.692929,
   0.0518878, 0.0775269, 0.994836, 0.202528, 0.89283, 0.801992,
   0.0807178, 0.623411, 0.667457, 0.95287, 0.89042, 0.292267,
   0.123173, 0.161831, 0.900214, 0.89706, 0.880272, 0.724242,
   0.332238, 0.924622, 0.128022, 0.667856, 0.651131, 0.558705,
   0.15211, 0.50778, 0.264108, 0.871506, 0.408204, 0.679121,
   0.987548, 0.724772, 0.245659, 0.785387, 0.00704876, 0.468503,
   0.126751, 0.300177, 0.0773379, 0.818363, 0.22353, 0.871922,
   0.390249, 0.907604, 0.0963743, 0.763163, 0.487964, 0.216776,
   0.355977, 0.901986, 0.677733, 0.657118, 0.183704, 0.513379,
   0.366173, 0.274021, 0.477181, 0.984682, 0.542599, 0.45365,
   0.491485, 0.380027, 0.108538, 0.200592, 0.342405, 0.801922,
   0.897731, 0.160582, 0.900586, 0.15083, 0.991416, 0.735416,
   0.141253, 0.0444179, 0.531286, 0.327067, 0.00725067, 0.861938,
   0.596312, 0.211828, 0.188039, 0.364832, 0.73713, 0.947066,
   0.342835, 0.0362105, 0.589125, 0.428942, 0.232729, 0.481197,
   0.47738, 0.332325, 0.384561, 0.31856, 0.0402633, 0.70539,
   0.491939, 0.0176865, 0.257534, 0.367258, 0.502348, 0.955705,
   0.540158, 0.43701, 0.831401, 0.361729, 0.57225, 0.810814,
   0.345758, 0.154105, 0.0390846, 0.895167, 0.0695241, 0.492067,
   0.163857, 0.944412, 0.725526, 0.917474, 0.98585, 0.185111,
   0.152802, 0.150655, 0.0600263, 0.862254, 0.901009, 0.261556,
   0.964212, 0.50695, 0.305114, 0.0456411, 0.0896164, 0.183574,
   0.334409, 0.404425, 0.173848, 0.859352, 0.127045, 0.239696,
   0.573871, 0.0502023, 0.750492, 0.520608, 0.853189, 0.552592,
   0.416049, 0.53815, 0.692923, 0.950959, 0.766211, 0.708601,
   0.450427, 0.326537, 0.104325, 0.393347, 0.984022, 0.461008,
   0.153284, 0.247629, 0.898732, 0.994069, 0.319894, 0.458968,
   0.883366, 0.737815, 0.448432, 0.804006, 0.927127, 0.228896,
   0.0469571, 0.208345, 0.649669, 0.98389, 0.234265, 0.284877,
   0.932569, 0.680498, 0.125215, 0.490118, 0.418852, 0.651852,
   0.683019, 0.495065, 0.559923, 0.619779, 0.63055, 0.659214,
   0.410865, 0.410061, 0.903431, 0.96172, 0.630756, 0.112834,
   0.406017, 0.92664, 0.033646, 0.488245, 0.940499, 0.961077,
   0.828277, 0.844607, 0.314767, 0.285, 0.997165, 0.34901,
   0.80921, 0.39492, 0.416082, 0.0852057, 0.0527761, 0.00737501,
   0.951782, 0.605728, 0.478592, 0.698166, 0.0691696, 0.532819,
   0.0827556, 0.872722, 0.838275, 0.894357, 0.454686, 0.908897,
   0.833708, 0.129766, 0.978884, 0.108387, 0.653993, 0.656135,
   0.652949, 0.107255, 0.627502, 0.427824, 0.444293, 0.237789,
   0.51581, 0.223922, 0.45393, 0.196228, 0.00599107, 0.691922,
   0.140896, 0.039503, 0.927191, 0.298322, 0.89648, 0.141991,
   0.438295, 0.430279, 0.693321, 0.649415, 0.72294, 0.458577,
   0.301288, 0.747995, 0.549597, 0.0806066, 0.75449, 0.706724,
   0.913141, 0.156217, 0.541507, 0.107396, 0.00156861, 0.363555,
   0.273939, 0.0861067, 0.195141, 0.741421, 0.0619014, 0.377172,
   0.13633, 0.304363, 0.428086, 0.840639, 0.617211, 0.471474,
   0.0557778, 0.458037, 0.23476, 0.61348, 0.763652, 0.707429,
   0.753404, 0.46669, 0.654086, 0.215179, 0.506498, 0.709857,
   0.568382, 0.792586, 0.990047, 0.713517, 0.0828693, 0.78515,
   0.0175727, 0.344072, 0.824972, 0.312729, 0.0436015, 0.81105,
   0.324504, 0.940228, 0.405966, 0.0732837, 0.679378, 0.306335,
   0.564714, 0.152579, 0.394436, 0.287834, 0.621498, 0.522093,
   0.822563, 0.816489, 0.725665, 0.257441, 0.811438, 0.842367,
   0.662496, 0.563133, 0.572351, 0.496833, 0.268382, 0.697455,
   0.119705, 0.875588, 0.00911642, 0.219648, 0.632082, 0.410528,
   0.746713, 0.00302351, 0.816052, 0.387693, 0.953429, 0.283769,
   0.313276, 0.231767, 0.305868, 0.728366, 0.653756, 0.675455,
   0.376992, 0.105858, 0.162803, 0.224463, 0.547106, 0.216911,
   0.628058, 0.7688, 0.214425, 0.835567, 0.373164, 0.773721,
   0.935751, 0.16884, 0.696056, 0.613995, 0.414217, 0.740041,
   0.87208, 0.044006, 0.60927, 0.993419, 0.391246, 0.670059,
   0.678717, 0.197398, 0.671317, 0.823728, 0.389581, 0.684637,
   0.697404, 0.264768, 0.950687, 0.19493, 0.196537, 0.204602,
   0.746932, 0.686927, 0.179082, 0.835271, 0.405126, 0.953488,
   0.278117, 0.320797, 0.643557, 0.263779, 0.338647, 0.637338,
   0.74099, 0.818135, 0.393516, 0.829925, 0.54691, 0.916594,
   0.1951, 0.0492725, 0.122994, 0.153688, 0.0359633, 0.435421,
   0.115565, 0.30887, 0.179381, 0.855934, 0.685447, 0.301308,
   0.0896472, 0.700201, 0.275342, 0.667349, 0.127706, 0.357461,
   0.841893, 0.701857, 0.112696, 0.085248, 0.763246, 0.876245,
   0.0473259, 0.406054, 0.555637, 0.594141, 0.732385, 0.192951,
   0.931181, 0.359123, 0.773368, 0.993197, 0.657841, 0.330519,
   0.0274757, 0.783617, 0.248821, 0.942033, 0.743353, 0.527614,
   0.612224, 0.64731, 0.338164, 0.522379, 0.628447, 0.305289,
   0.996628, 0.3334, 0.459545, 0.577201, 0.0206621, 0.267767,
   0.361208, 0.820593, 0.704592, 0.0731358, 0.193034, 0.329495,
   0.821117, 0.509468, 0.636317, 0.581848, 0.111462, 0.347921,
   0.505986, 0.0997631, 0.717672, 0.909032, 0.0925625, 0.697718,
   0.542582, 0.168113, 0.466822, 0.875452, 0.717125, 0.720702,
   0.835451, 0.426144, 0.197401, 0.710511, 0.564971, 0.461034,
   0.604498, 0.795729, 0.812373, 0.550125, 0.949433, 0.112938,
   0.146625, 0.325336, 0.924118, 0.653536, 0.972401, 0.140994,
   0.692057, 0.394233, 0.873314, 0.789136, 0.00970479, 0.108407,
   0.995082, 0.336017, 0.444101, 0.997304, 0.689243, 0.107083,
   0.742757, 0.519879, 0.611769, 0.00971271, 0.241471, 0.400556,
   0.137705, 0.413643, 0.105875, 0.433329, 0.959648, 0.800673,
   0.917371, 0.260386, 0.312034, 0.358629, 0.47337, 0.932729,
   0.368363, 0.0685616, 0.315157, 0.84421, 0.633568, 0.369094,
   0.356924, 0.82169, 0.139511, 0.754654, 0.462201, 0.211439,
   0.655634, 0.245354, 0.665275, 0.276054, 0.643854, 0.247995,
   0.047488, 0.131173, 0.618855, 0.100514, 0.33237, 0.146716,
   0.862983, 0.153355, 0.431187, 0.96382, 0.920129, 0.603394,
   0.249981, 0.424237, 0.153991, 0.12297, 0.761571, 0.729702,
   0.0975681, 0.826656, 0.604741, 0.886228, 0.826573, 0.205402,
   0.192783, 0.106175, 0.479114, 0.476268, 0.641578, 0.995825,
   0.822622, 0.802807, 0.775416, 0.418171, 0.194314, 0.833462,
   0.993953, 0.360891, 0.498294, 0.826378, 0.940593, 0.54677,
   0.567994, 0.283332, 0.959346, 0.722205, 0.0989476, 0.0116565,
   0.91063, 0.96041, 0.609035, 0.0576239, 0.484504, 0.0651855,
   0.572524, 0.414143, 0.505064, 0.603724, 0.79098, 0.994402,
   0.921657, 0.288521, 0.170754, 0.862989, 0.262446, 0.936416,
   0.346406, 0.0443176, 0.845917, 0.322079, 0.179143, 0.849279,
   0.835571, 0.445848, 0.36516, 0.242378, 0.652615, 0.50539,
   0.0879584, 0.317567, 0.356667, 0.497801, 0.536931, 0.193063,
   0.813266, 0.566415, 0.741249, 0.176922, 0.523094, 0.635647,
   0.316783, 0.170729, 0.448497, 0.889649, 0.322947, 0.776769,
   0.158657, 0.54845, 0.79216, 0.824873, 0.63233, 0.565109,
   0.792322, 0.554679, 0.486683, 0.67907, 0.123736, 0.636019,
   0.575037, 0.653027, 0.421521, 0.505189, 0.71837, 0.643647,
   0.774433, 0.894052, 0.332233, 0.848104, 0.0830674, 0.114621,
   0.428791, 0.693425, 0.388145, 0.552568, 0.00377168, 0.390547,
   0.91576, 0.179309, 0.653679, 0.376583, 0.234134, 0.0909816,
   0.128259, 0.640975, 0.861584, 0.64536, 0.560782, 0.0579905,
   0.646721, 0.447285, 0.51264, 0.933915, 0.313716, 0.622427,
   0.12227, 0.991064, 0.815535, 0.695226, 0.667499, 0.654199,
   0.123153, 0.840794, 0.220144, 0.966743, 0.0518601, 0.612163,
   0.626415, 0.154465, 0.0973362, 0.929288, 0.54854, 0.303486,
   0.692527, 0.309283, 0.116135, 0.875237, 0.106273, 0.131386,
   0.20795, 0.0147782, 0.377076, 0.510715, 0.590388, 0.646613,
   0.621737, 0.534328, 0.458881, 0.418544, 0.467697, 0.578304,
   0.552064, 0.547137, 0.732786, 0.941363, 0.493612, 0.13787,
   0.188021, 0.0679312, 0.719599, 0.303563, 0.991431, 0.978292,
   0.153433, 0.744382, 0.82083, 0.692745, 0.96768, 0.797513,
   0.80507, 0.81719, 0.512678, 0.584803, 0.785405, 0.294652,
   0.219141, 0.111131, 0.775225, 0.207778, 0.130542, 0.0190868,
   0.792537, 0.17457, 0.00214379, 0.0307179, 0.276004, 0.802503,
   0.672694, 0.964141, 0.324691, 0.075299, 0.550065, 0.942038,
   0.831924, 0.140763, 0.797655, 0.190853, 0.66499, 0.483491,
   0.0323685, 0.0172901, 0.594053, 0.252904, 0.552556, 0.812284,
   0.055484, 0.520342, 0.386532, 0.437681, 0.102171, 0.193509,
   0.307954, 0.783097, 0.50989, 0.716254, 0.0849843, 0.331658,
   0.182162, 0.600897, 0.272654, 0.500659, 0.582393, 0.282989,
   0.193401, 0.492933, 0.723111, 0.324014, 0.70551, 0.502189,
   0.287798, 0.0181713, 0.405543, 0.96388, 0.936469, 0.2321,
   0.912726, 0.189019, 0.840208, 0.381866, 0.0224776, 0.780699,
   0.208126, 0.980816, 0.568026, 0.815721, 0.817384, 0.774247,
   0.774172, 0.502981, 0.60928, 0.170428, 0.3814, 0.195631,
   0.968751, 0.794007, 0.871234, 0.831813, 0.272882, 0.331448,
   0.646631, 0.931254, 0.590774, 0.138164, 0.113961, 0.346402,
   0.976205, 0.0725465, 0.28896, 0.547044, 0.176012, 0.233773,
   0.016553, 0.205529, 0.325758, 0.0203419, 0.88681, 0.607272,
   0.42616, 0.475589, 0.221191, 0.556148, 0.179974, 0.815952,
   0.700007, 0.0132562, 0.796486, 0.540178, 0.771924, 0.727969,
   0.980281, 0.587346, 0.519204, 0.266219, 0.334366, 0.696914,
   0.0262618, 0.38262, 0.696469, 0.548667, 0.444468, 0.169852,
   0.701222, 0.446224, 0.680703, 0.581285, 0.656598, 0.439896,
   0.339559, 0.965689, 0.339033, 0.133131, 0.526695, 0.168293,
   0.499211, 0.24377, 0.0440521, 0.383517, 0.763724, 0.91456,
   0.0103098, 0.27598, 0.391783, 0.70111, 0.552438, 0.824417,
   0.983447, 0.790926, 0.0876236, 0.690447, 0.344681, 0.0491691,
   0.385328, 0.2132, 0.253092, 0.72258, 0.404145, 0.457607,
   0.00437671, 0.559442, 0.542348, 0.241701, 0.273888, 0.24136,
   0.53244, 0.725365, 0.201262, 0.612635, 0.557595, 0.496667,
   0.486006, 0.303778, 0.604795, 0.791238, 0.330242, 0.382439,
   0.659438, 0.17844, 0.0435847, 0.527509, 0.841977, 0.11501,
   0.970337, 0.44904, 0.00701654, 0.926934, 0.974887, 0.923092,
   0.405509, 0.391068, 0.685755, 0.478569, 0.309571, 0.954913,
   0.217361, 0.186405, 0.91385, 0.0767558, 0.0350725, 0.463764,
   0.483755, 0.462039, 0.484615, 0.917178, 0.0170215, 0.0795608,
   0.179031, 0.978949, 0.198036, 0.39716, 0.0739331, 0.593516,
   0.224185, 0.877096, 0.355651, 0.421093, 0.317781, 0.938326,
   0.451167, 0.75658, 0.839437, 0.411796, 0.0484464, 0.239414,
   0.825949, 0.730261, 0.492545, 0.207525, 0.879243, 0.429492,
   0.47031, 0.505609, 0.773247, 0.962786, 0.546387, 0.130571,
   0.506451, 0.913681, 0.229194, 0.0631589, 0.512126, 0.302455,
   0.364844, 0.936343, 0.109926, 0.520707, 0.516668, 0.646386,
   0.816071, 0.70639, 0.3037, 0.288095, 0.00529818, 0.0464415,
   0.542895, 0.432183, 0.703891, 0.304397, 0.00640768, 0.693956,
   0.31689, 0.964322, 0.358019, 0.228152, 0.549631, 0.642869,
   0.692265, 0.904281, 0.255918, 0.220087, 0.00737114, 0.886714,
   0.000557859, 0.375943, 0.480969, 0.642358, 0.106144, 0.953816,
   0.791466, 0.167957, 0.85762, 0.0184138, 0.48118, 0.18782,
   0.697239, 0.498851, 0.180979, 0.718014, 0.653414, 0.935228,
   0.380892, 0.64911, 0.599494, 0.692485, 0.588772, 0.484283,
   0.338065, 0.857828, 0.513976, 0.387338, 0.99332, 0.733511,
   0.125001, 0.893002, 0.678355, 0.111692, 0.202635, 0.681242,
   0.633498, 0.208498, 0.223707, 0.841645, 0.535497, 0.102716,
   0.347583, 0.824167, 0.770176, 0.343443, 0.251657, 0.602477,
   0.831791, 0.903924, 0.245502, 0.144927, 0.788085, 0.344901,
   0.745242, 0.289619, 0.627055, 0.905744, 0.845353, 0.850521,
   0.701016, 0.9767, 0.400766, 0.674692, 0.549315, 0.330345,
   0.104749, 0.522786, 0.463669, 0.884866, 0.94961, 0.0953167,
   0.988477, 0.334254, 0.81259, 0.199162, 0.311617, 0.338806,
   0.311984, 0.517012, 0.425784, 0.158801, 0.967776, 0.410919,
   0.320096, 0.854361, 0.237374, 0.550796, 0.221666, 0.542285,
   0.180524, 0.065194, 0.715723, 0.161053, 0.815644, 0.525188,
   0.833123, 0.290635, 0.697, 0.476245, 0.257092, 0.938906,
   0.199958, 0.697776, 0.519344, 0.610224, 0.0334531, 0.246516,
   0.199423, 0.702992, 0.191733, 0.458268, 0.106035, 0.122696,
   0.15825, 0.701934, 0.403554, 0.533411, 0.0382729, 0.253054,
   0.0771629, 0.87737, 0.953502, 0.503947, 0.843674, 0.635129,
   0.613336, 0.337282, 0.70466, 0.213391, 0.45954, 0.491307,
   0.393437, 0.499356, 0.67601, 0.700162, 0.627522, 0.758473,
   0.652767, 0.0514409, 0.566584, 0.574168, 0.0416337, 0.737174,
   0.682549, 0.606476, 0.0463637, 0.235273, 0.230078, 0.922264,
   0.499006, 0.789148, 0.212063, 0.149457, 0.926292, 0.193828,
   0.673791, 0.406026, 0.0748398, 0.833202, 0.630626, 0.939397,
   0.441485, 0.0394289, 0.68146, 0.297045, 0.441741, 0.341842,
   0.344349, 0.477632, 0.554714, 0.0735667, 0.434727, 0.455637,
   0.892112, 0.724636, 0.964491, 0.203202, 0.212578, 0.797251,
   0.394528, 0.82822, 0.888961, 0.761608, 0.341528, 0.0641562,
   0.272718, 0.578804, 0.965012, 0.960964, 0.918275, 0.442024,
   0.102701, 0.0962546, 0.751176, 0.0164641, 0.711757, 0.497362,
   0.166126, 0.0880301, 0.521271, 2.09413e-05, 0.35196, 0.385871,
   0.326944, 0.955083, 0.0754337, 0.813568, 0.643436, 0.225182,
   0.638667, 0.0742234, 0.471927, 0.673668, 0.34258, 0.742383,
   0.22319, 0.147394, 0.258951, 0.195132, 0.58523, 0.962263,
   0.761757, 0.855648, 0.868606, 0.659604, 0.971233, 0.514057,
   0.753102, 0.389654, 0.907077, 0.242223, 0.038068, 0.808043,
   0.773578, 0.526646, 0.338432, 0.0213833, 0.389036, 0.535964,
   0.942265, 0.645361, 0.585724, 0.268921, 0.760883, 0.165255,
   0.441825, 0.756842, 0.244908, 0.164279, 0.0399154, 0.857324,
   0.0366559, 0.075204, 0.954057, 0.835515, 0.505384, 0.99531,
   0.173231, 0.500863, 0.997539, 0.638374, 0.154215, 0.8991,
   0.165897, 0.230397, 0.28242, 0.6255, 0.784634, 0.349016,
   0.906085, 0.569661, 0.29876, 0.256539, 0.645641, 0.284183,
   0.270042, 0.593194, 0.809504, 0.326832, 0.0578847, 0.868672,
   0.77181, 0.806306, 0.586394, 0.52335, 0.941762, 0.197046,
   0.752633, 0.502982, 0.620276, 0.98102, 0.00687803, 0.599066,
   0.506719, 0.431664, 0.96892, 0.63674, 0.684332, 0.574967,
   0.46705, 0.711257, 0.0970853, 0.711979, 0.227558, 0.575174,
   0.941089, 0.888498, 0.987949, 0.460388, 0.743806, 0.149433,
   0.528736, 0.468804, 0.190239, 0.355274, 0.097481, 0.363414,
   0.905257, 0.648374, 0.221958, 0.444394, 0.92643, 0.503593,
   0.895055, 0.182344, 0.653674, 0.296911, 0.179451, 0.0288017,
   0.0699155, 0.0704978, 0.857067, 0.731167, 0.717964, 0.820579,
   0.473041, 0.396136, 0.853972, 0.706692, 0.369631, 0.382982,
   0.774302, 0.690334, 0.447999, 0.523902, 0.213521, 0.646979,
   0.776942, 0.0585694, 0.376628, 0.987798, 0.916904, 0.409575,
   0.731379, 0.281012, 0.977085, 0.863234, 0.372496, 0.532011,
   0.503778, 0.995698, 0.691713, 0.614616, 0.847526, 0.370801,
   0.060282, 0.158923, 0.015162, 0.827835, 0.427988, 0.187522,
   0.679449, 0.492898, 0.140312, 0.231082, 0.799587, 0.661465,
   0.242697, 0.00340222, 0.181152, 0.623874, 0.450312, 0.390911,
   0.0470238, 0.329456, 0.174745, 0.935083, 0.948362, 0.126102,
   0.398092, 0.727681, 0.138177, 0.341662, 0.30681, 0.557449,
   0.0394847, 0.618965, 0.945611, 0.892076, 0.123845, 0.466184,
   0.160643, 0.935201, 0.920271, 0.992589, 0.448256, 0.83897,
   0.573014, 0.641371, 0.527178, 0.274917, 0.52401, 0.0369476
};

int TestLabelPlacementMapper2D( int argc, char* argv[] )
{ 
  vtkIdType i;

  vtkRenderer* rr = vtkRenderer::New();
  vtkRenderWindow* rw = vtkRenderWindow::New();
  vtkRenderWindowInteractor* ri = vtkRenderWindowInteractor::New();
  //rw->SetSize( 1800, 1200 );
  rw->SetSize( 600, 600 );

  vtkPoints* pts = vtkPoints::New();
  vtkPolyData* polyData = vtkPolyData::New();
  vtkStringArray* labelText = vtkStringArray::New();
  labelText->SetName( "LabelText" );
  labelText->SetNumberOfValues( TXTMULT * vtkTextLabelListLength );
  vtkIdTypeArray* priorities = vtkIdTypeArray::New();
  priorities->SetName( "Priorities" );
  priorities->SetNumberOfComponents( 1 );
  priorities->SetNumberOfTuples( TXTMULT * vtkTextLabelListLength );
  pts->SetNumberOfPoints( TXTMULT * vtkTextLabelListLength );
#ifdef GENERATE_TEST_POINTS
  cout << "static double vtkLabelPlacer2DTestPoints[] =\n{\n";
#else
  double* ptsrc = vtkLabelPlacer2DTestPoints;
#endif
  for ( i = 0; i < static_cast<int>( TXTMULT * vtkTextLabelListLength); ++ i )
    {
    labelText->SetValue( i, vtkTextLabelList[i % vtkTextLabelListLength] );
    priorities->SetValue( i, i );
#ifdef GENERATE_TEST_POINTS
    double x = vtkMath::Random(), y = vtkMath::Random();
    cout << "   " << x << ", " << y << ",\n";
    pts->SetPoint( i, x, y, -1. ); // 2-D
    //pts->SetPoint( i, vtkMath::Random(), vtkMath::Random(), vtkMath::Random() ); // 3-D
#else // GENERATE_TEST_POINTS
    if ( i % vtkTextLabelListLength == 0 )
      {
      ptsrc = vtkLabelPlacer2DTestPoints;
      }
    pts->SetPoint( i,
      ptsrc[0] + double( ( i / vtkTextLabelListLength ) % PTSMULT ),
      ptsrc[1] + double( ( i / vtkTextLabelListLength ) / PTSMULT ),
      -1. ); // 2-D
    ptsrc += 2;
#endif // GENERATE_TEST_POINTS
    }
#ifdef GENERATE_TEST_POINTS
  cout << "};\n";
#endif
  polyData->SetPoints( pts );
  polyData->GetPointData()->AddArray( labelText );
  polyData->GetPointData()->AddArray( priorities );

  vtkSmartPointer<vtkTextProperty> tprop = vtkSmartPointer<vtkTextProperty>::New();
  tprop->SetFontSize( 12 );
  tprop->SetFontFamily( vtkTextProperty::GetFontFamilyFromString( "Arial" ) );

  vtkPointSetToLabelHierarchy* labelHierarchy = vtkPointSetToLabelHierarchy::New();
  labelHierarchy->SetInput( polyData );
  labelHierarchy->SetTextProperty( tprop );
  labelHierarchy->SetPriorityArrayName( "Priorities" );
  labelHierarchy->SetLabelArrayName( "LabelText" );

  vtkLabelPlacementMapper* labelPlacer = vtkLabelPlacementMapper::New();
  labelPlacer->SetInputConnection( labelHierarchy->GetOutputPort() );
  labelPlacer->GeneratePerturbedLabelSpokesOn();
  labelPlacer->OutputTraversedBoundsOn();

  vtkActor2D* a1 = vtkActor2D::New();
  vtkActor* a2 = vtkActor::New();
  vtkActor* a3 = vtkActor::New();
  vtkPolyDataMapper* m2 = vtkPolyDataMapper::New();
  vtkPolyDataMapper* m3 = vtkPolyDataMapper::New();

  //m2->SetInputConnection( labelPlacer->GetOutputPort( 2 ) );
  //m3->SetInputConnection( labelPlacer->GetOutputPort( 3 ) );
  a1->SetMapper( labelPlacer );
  //a2->SetMapper( m2 );
  //a3->SetMapper( m3 );

  rr->AddActor( a1 );
  //rr->AddActor( a2 );
  //rr->AddActor( a3 );
  rw->AddRenderer( rr );
  rw->SetInteractor( ri );

  rw->Render();

  //labelPlacer->Update();

  cout << "Set of " << pts->GetNumberOfPoints() << " labels\n";

  //rr->ResetCamera();
  vtkCamera* cam = rr->GetActiveCamera();
  cam->SetClippingRange( 0.0106829, 10.6829 );
  cam->SetFocalPoint( 5.00016, 4.99974, -1. );
  cam->SetPosition( 4.91977, 4.45127, -0.859406 );
  cam->SetViewUp( -0.0373979, 0.253276, 0.966671 );
  //cam->SetDirectionOfProjection( 0.140573, 0.959062, -0.245844 );

  //rw->Render();

  int retval = vtkRegressionTestImageThreshold( rw, 60.0 );
  if ( retval == vtkRegressionTester::DO_INTERACTOR)
    {
    ri->Start();
#ifdef GENERATE_TEST_POINTS
    vtkIndent indent;
    cam->PrintSelf( cout, indent );
#endif // GENERATE_TEST_POINTS
    }

  pts->Delete();
  polyData->Delete();
  labelText->Delete();
  priorities->Delete();
  labelHierarchy->Delete();
  labelPlacer->Delete();
  rr->Delete();
  rw->Delete();
  ri->Delete();
  a1->Delete();
  a2->Delete();
  a3->Delete();
  m2->Delete();
  m3->Delete();

  return !retval;
}
