a:6:{i:0;s:12187:"				<div class="h1"><h1>Incredible  Spiti</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.tanishhimachaltours.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.tanishhimachaltours.com/travel-packages.htm" title="Travel Packages">Travel Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Incredible  Spiti</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Tour Code </td>
						<td class="p5px pl0px vat">1</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Lahaul & Spiti, Kaza</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 10500 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.tanishhimachaltours.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Incredible  Spiti - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="141091"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
										</tr>
					</table>
					</div>
					<br />
					
					Transport : Arrival - Airport Transfer <br />
Transport : Departure - Airport Transfer <br />
Meal plan : Lunch <br />
NON VEG MEAL<br />
*All kind of personal expenses such as tips, laundry, telephone bills and beverages.<br />
*It also does not include any meals unless and otherwise specificall<br />
mentioned..<br />
*Optional, suggested or unspecified activities.<br />
*Camera fee (still or movie)1-631-10<br />						<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Ludhiana Manali Overnight
								</p>
								<p class="aj">Ludhiana Manali Overnight Journey<br />
start Your Journey from Ludhiana. Drive Your Way to Manali in a Private Vehicle. An Overnight Journey. An O/n Journey. It Will Take Around 8-9 Hours to Reach Manali. On the Way Halt for Dinner & Tea Break On Your Own & Continuously Headed to Manali.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Manali Arrival City Tour
								</p>
								<p class="aj">Manali Arrival City Tour<br />
on Next Day Arrival At Manali & Transfer to Hotel. After Fresh Up, Embark On a Local Sightseeing Tour of Manali. We Move to Visit Solang Valley. <br />
solang Valley Located At a Distance of 13 Kms from Manali, Solang Valley Lies Between Solang Village and Beas Kund. It Offers a Beautiful View of Glaciers and Snow Capped Mountains. Since the Valley Has fine Ski Slopes, It is a Perfect Place for Skiing. the Guest House of the Atal Bihari Vajpayee Institute of Mountaineering and Allied Sports, Manali is Based Here. this Institute is the Venue for Winter Skiing Festival and also Offers Training in Skiing to the Tourists. in Winter, the Valley Becomes a Skiing Paradise with Children of all Ages Slipping and Sliding Over the Fresh White Snow. When Snow Melts in the Summer, Skiing is Replaced By Parachuting, Zorbing, Paragliding and Horse Riding. for Snow Lovers, the Best Time to Visit Solang Valley is Between the Months of December to February. At 4:00-5:00 Pm Return Back to Manali. Dinner & Overnight Stay At the Hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Manali Rohtang Kaza
								</p>
								<p class="aj">Manali Rohtang Kaza<br />
after Breakfast Check Out from Hotel as It is the Longest Day’s Journey Driving to Kaza (9-10 Hrs). Today We Will First Cross the Rohtang Pass (3,980 Metres / 13058 Feet) and Enter Lahaul Spiti Valley. We Will Stop for Various Photo Stops to the Rohtaang Pass and Will Stop for Lunch Break At Chatru. Later We Continue Our Drive to Kaza Over Kunzum Pass, 4,558 Metres / 14,950 Feet). We Will Visit the Temple On the Kunzum Pass Where Travellers Say Prayers Before Heading Down the Pass. the Kunzum Pass Provides Beautiful Views of Cb Ranges and Glaciers. Today You Will Experience the Ever-changing Landscapes After, Every Couple of Kilometers. We Will Arrive Kaza – the Administrative Headquarters of Spiti Valley By Evening. Overnight Stay in Hotel in Kaza.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Kaza City Tour
								</p>
								<p class="aj">Kaza City Tour<br />
after Breakfast, We Visit the World Famous Ki Monastery. the Car Will First Stop At the Base of the Monastery Hill for the Ultimate Photo Opportunity of this Remarkable Structure. with Over 1000 Years’ Worth Stories to Tell, the Ki Monastery Situated At a Height of 13,668 Feet Was Founded By a Disciple of the Famous Atisha, in the 11th Century .then We Will Move Farther Down the Valley to the Picturesque Village of Kibber. Located At a Height of 4205 Metres and 18 Km from Kaza, this Formerly Highest Permanently Inhabited Village of this Region, is also a Popular Base Camp to Embark On Adventure and Treks to Adjoining Mountains of High Altitude. the Expanses of Beautiful Landscapes and Immeasurable Beauty of the Snow-tipped Mountains Makes the Place a Haven for Nature-lovers and Photographers Alike. <br />
later, We Drive to Some of the Highest Inhabited Regions of the World. <br />
the Highest Village in Asia, Comik, Which Literally Translates to ‘eye of a Snow Cock’, is Situated At a Height of 4513 Metres. this Farming Village Has a Population of 84 People, Living in Utter Isolation, Cut-off from the Rest of the World for Most Parts of the Year. this Little Hamlet Ensures to Bring You Thousands of Miles Away from Your Familiar Settings to a Place of Soft Brown Pastures and Snow-white Mountain Peaks. After Komik, We Head to the Picturesque Village of Langza. Once You are Here, You Can Walk About the Village and Visit the Ancient Lang (temple) Which is Estimated to Be Around 1000 Years Old. At Langza, Trek Back to the Prehistoric Era When Spiti Was Submerged By the Tethys Sea as You Explore a Land Very Rich with Fossils of Marine Animals and Plants Which Were Here Millions of Years Ago.overnight Stay At Kaza.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Kaza Kunzum Pass Chandertal
								</p>
								<p class="aj">Kaza Kunzum Pass Chandertal<br />
morning After Breakfast Leave for Chandratal Lake By Crossing Kunzam Pass (15,100ft) Reach Baltal, to Proceed to Chandratal Lake. On a Way have a Magnificent View of Cb Ranges Peaks. this Deep Blue Water Has a Circumference of 2.5 Kms. this is the Source of the River Chandra According to Some Believers, this is the Spot from Where the God Indra`s Chariot Took the Eldest Pandava Brother Yudhistra to Swarga to Heaven in His Mortal Form. Full Day At Leisure to Enjoy the Beauty of Beautiful Lake and Natural Surrounded Snow Peaks. O/n Camping At Chandratal Lake.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Chandertal Rohtang Manali
								</p>
								<p class="aj">CHANDERTAL ROHTANG MANALI LUDHAINA DROP<br />
After breakfast Chander Tal –Manali by road and way back via Rohtang Pass ( Rohtang pass situated at the height of 3978 meters on eastern Pir Panjal range of the Himalyas, about 51 km from Manali connects the Kullu valley) , Enjoy the scenic view of snow covered peaks at Rohtang / ,Solang ,Nehru Kund, Rahala Falls ,Gulaba .Leave back to Manali have a small halt at manali. after this we move back to ludhiana. cab will drop you at ludhiana in late night. tour ends.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>2 Star Hotel</li>
																<li>Accomodation : Hotel </li><li>
Meal plan : Breakfast </li><li>
Transport : Cab for Transport (A/c will not be operational in hills  )</li><li>
Sightseeing : Local Sightseeing </li><li>
Sightseeing : Cab for sightseeing </li><li>
Government Taxes/VAT/ Service Charges</li><li>
Accomodation : Camp Stay </li><li>
Sightseeing : Rohtang Permit </li><li>
Meal plan : Dinner</li>
													</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Transport : Arrival - Airport Transfer </li><li>
Transport : Departure - Airport Transfer </li><li>
Meal plan : Lunch </li><li>
NON VEG MEAL</li><li>
*All kind of personal expenses such as tips, laundry, telephone bills and beverages.</li><li>
*It also does not include any meals unless and otherwise specificall</li><li>
mentioned..</li><li>
*Optional, suggested or unspecified activities.</li><li>
*Camera fee (still or movie)</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p><p>Online~^#^~~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.tanishhimachaltours.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Incredible  Spiti - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="141091"/>
						</form>
						</div>
						
						";i:1;s:56:"Book Incredible  Spiti - 5 Nights / 6 Days Tour Packages";i:2;s:117:"book incredible  spiti - 5 nights / 6 days tour packages, adventure tour packages, lahaul & spiti, kaza tour packages";i:3;s:170:"Book Incredible  Spiti - 5 Nights / 6 Days tour packages from Tanish Himachal Tours - Get attractive 5 Nights / 6 Days Adventure  tour packages for  Lahaul & Spiti, Kaza.";i:4;s:781:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Lahaul & Spiti, Kaza"        
		                 },
		      "description": "Transport : Arrival - Airport Transfer 
Transport : Departure - Airport Transfer 
Meal plan : Lunch 
NON VEG MEAL
*All kind of personal expenses such as tips, laundry, telephone bills and beverages.
*It also does not include any meals unless and otherwise specificall
mentioned..
*Optional, suggested or unspecified activities.
*Camera fee (still or movie)1-631-10",
		      "name": "Incredible  Spiti",
		      "telephone": "+91-9736035555"
		    }
		    </script>
			";i:5;N;}