a:6:{i:0;s:19987:"				<div class="h1"><h1>Shimla - Sangla - Chitkul - Rakcham - Kalpa - Kaza - Chandertal Manali Tour</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>Shimla - Sangla - Chitkul - Rakcham - Kalpa - Kaza - Chandertal Manali Tour</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">Duration </td>
						<td class="p5px pl0px vat">
						8 Nights / 9 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New Delhi, Manali, Narkanda, Sarahan, Shimla, Sangla, Chitkul, Kalpa, Kaza</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 20000 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="Shimla - Sangla - Chitkul - Rakcham - Kalpa - Kaza - Chandertal Manali Tour - 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="172097"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_15/438757/259195.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/438757/259195.jpg"  width="150" height="90"    alt="Shimla - Sangla - Chitkul - Rakcham - Kalpa - Kaza - Chandertal Manali Tour" title="Shimla - Sangla - Chitkul - Rakcham - Kalpa - Kaza - Chandertal Manali Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					NON VEG MEAL<br />
<br />
Cabs : Non-AC <br />
<br />
Airfare <br />
<br />
Others : Other Exclusions (*Car at disposal <br />
<br />
All kind of personal expenses such as tips, laundry, telephone bills and beverages. <br />
<br />
It also does not include any meals unless and otherwise specifically mentioned.. <br />
<br />
Optional, suggested or unspecified activities. <br />
<br />
Camera fee (still or movie)<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> Delhi-shimla
								</p>
								<p class="aj">Start Your Journey from Delhi. Drive Your Way to Shimla in a Private Vehicle. Reach Shimla and Vist Kalibari Temple,Gaity Theatre,Lakkar Bazaar Famous for Wooden Items,Famous Ridge Maidan and Lots of More Historic and Famous Palces.we Move Towards Beautiful Narkanda . Enroute Take ,Kufri is a Small Hill Station in Shimla District of Himachal Pradesh State in India. It is Located 13 Km from the State Capital Shimla On the National Highway No.22. the Region Around Shimla Including Kufri Was Once a Part of the Kingdom of Nepal Until the Area Was Ceded to the British Raj as Part of the Sugauli Treaty. this Region Remained Obscure from the Rest of the World Until the British 'discovered' It in 1819. It is the Kufri Bungalow Which is Very Famous for Its Statues and Architecture.kufri to the Mahasu Peak- the Highest Peak in Kufri.the Indira Tourist Park is Near the Himalayan Nature Park and Provides Panoramic View of the Locations Around After Kufri Continue Drive Towards Narkanda…overnight Stay At Narkanda.</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> Narkanda Sarahan Sangla
								</p>
								<p class="aj">After Breakfast, We Shall Go for a Sightseeing Excursion to the Beautiful Sarahan the Chief Landmark of this Village is the Impressive Golden-spired Bhimakali Temple that Rises Majestically Against a Snowy Himalayan Backdrop. Perched At 1,920 Metres, this Himachali Hamlet Commands a Superb View of the Surrounding Alpine Countryside -- Rolling Meadows, Apple Orchards, Flower-dotted Valleys, Silent Forests, the Swift Sutlej River and the Haughty Peaks.after Local Enjoy Move Our Wheels Towards Sangla.overnight Stay At Sangla.</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> Sangla Chitkul Rakcham Kalpa
								</p>
								<p class="aj">After Breakfast, We Shall Go for a Sightseeing Excursion to the Beautiful Village of Chitkul, the Last Inhabited Village Near the Indo-tibet Border. the Drive to Chitkul is Extremely Scenic Amidst Snow -clad Mountains, Apple Orchids and Wooden Houses. One Can Witness the Unique Architecture, Local Lifestyle and also Visit the Beautiful 500 Years Old Goddess Chitkul Mathi Temple Here. <br />
in Tibetan, the Term Sangala Means “pass of Light” Which Refers to the Valley Receiving Sunlight During the Day. Later, We Shall Visit the Beautiful Rakcham Village While Traveling from Sangla to Chitkul You Will Sure Come Across this Breathtaking Valley On the Banks of River Baspa Comfortably Hidden Away from the Modern World . Nestled Between Mighty Snow Covered Peaks and a Lush Green Landscape, Rakchamor Rakchham is Heaven On Earth,We Shall Drive to the Beautiful Town of Kalpa Via Rekong Peo, (approx. 51 Kms/ 3 Hours’ Drive) the District Headquarters. One Can Enjoy Spectacular Views of the Sacred Kinner Kailash Peak, One of the Most Beautiful Peaks in the Himalayas On the Way. <br />
situated At the Height of 2758 M Above the Sea Level and 110 Km from Sarahan, Kalpa is a Beautiful and Main Village of Kinnaur. Across the River Faces the Majestic Mountains of the Kinner Kailash Range. These are Spectacular Sights Early in the Morning as the Rising Sun Touches the Snowy Peaks with Crimson and Golden Light.continue Our Journey Towards Kalpa.overnight Stay At Kalpa.</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> KALPA NAKO TABO
								</p>
								<p class="aj">After breakfast local visit of Nako. 11000+ ft asl Nako lies in Upper Kinnaur on the edge of remote spiti valley and an important centre of Tibetan Buddhism.Nako has seven temples of different periods distributed all over the village, including a monastic complex on its western edge.Nako is situated right on the Tibetan border over a beautiful lake.Drive to Nako and the evening and morning views of the lake and surrounding snow peaks is simply stunning. <br />
We shall take a detour here to Giu village famous for its naturally preserved mummy that is almost 500 years old. The mummy is said to be of a Tibetan Buddhist Lama and is in a sitting posture. We shall continue our drive and end our journey for the day at Tabo.</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> Tabo Dhankar Kaza
								</p>
								<p class="aj">After Breakfast, We Shall Visit Tabo Monastery, Which Houses the Priceless Collection of Thangkas (scroll Paintings), Manuscripts, Well-preserved Statues, Frescos and Extensive Murals Which Cover Almost Every Wall.<br />
we Visit the Old Monastery Followed By the New One. Grander Than the Old Monastery, the Place is a Picture of Calm. from Here We Proceeded Toward the Nearby Caves (phukpas) for Which We have to Hike a Bit from the Main Road. These Caves are Used By Monks for Meditation and One of Them also Has An Elaborate Mural Inside. from Here One Gets a Bird’s Eye View of Tabo Village and the Surrounding Scenery. <br />
later, We Shall Drive Towards Pin Valley National Park, the Greenest Part of Spiti that Lies Below the Kungri Glacier. the Valley is Famous for Its Chamurthi Horses, One of Four Recognized Indian Horse Breeds that are Found Only in this Part of the Indian Himalayas. <br />
we Visit the Kungri Monastery, One of the Oldest Monasteries in Spiti and the Picturesque Village of Mud. Mud is the Last Village of Pin Valley. We Leave Kungri and Drive Towards the Village of Kaza. Today We Visit Some Extraordinary Sites.the Dhankar Monastery, a Near 1,000 Year Old Symbol of Vajrayana Buddhist Architecture, is One of the 100 Most Endangered Monuments in the World (as Recognized By the World Monuments Fund)! It is Constructed On a 300 Metre High Ledge in a Rocky Mountain Near the Confluence of Pin and Spiti Rivers. An Architectural Marvel of Its Time, Today Owing to Its Age and An Earthquake that Struck the Region in 1975, It is in the Imminent Danger of Collapsing. There is also a Dilapidated Fort (there are Some Wonderful Murals Inside Its Rooms), that Once Enveloped the Entire Complex, the Remnants of Which Can Be Explored By Hiking. as a Matter of Fact, It is this Fort Which Lends the Place Its Name. Dhankar Literally Means – Fort On a Cliff! <br />
this Journey, Beside the Lingti Valley, Provides You with Sights of Some of the Finest Canyons and Rock Formations in India (some of Which, Atop the Mountain, Appear like the Ramparts of a Fort!). the Lalung Monastery, also About a Millennium Old, is Fondly Called the Golden Temple (serkhang) Since It Has Statues (supposedly 1,200 Years Old!) Which are Plated in Gold. <br />
arrive Kaza and Relax and Go Over the Memories of the Beauty Experienced Till Now.</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> Kaza City Tour
								</p>
								<p class="aj">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 7:</b> Kaza Chandertal
								</p>
								<p class="aj">After Breakfast Start Early from Kaza, Travel to Chandertal Lake Via Kunzum La Pass.today We Will Trek 18 Kms from Batal to Reach Chandratal and It Will Take Us About 5-6 Hrs, While On this Trek We Will Get a Nice View of the Lahaul Range, Peaks like Minar(6172 M), Talagiri(6279 M), Tara Pahar(6227 M) and Mulkila (6517 M). Dinner and Overnight Stay in Tents..overnight Stay At the Chandertal Camps</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 8:</b> Chandertal Manali
								</p>
								<p class="aj">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 Overnight Stay At 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 9:</b> Manali Delhi Drop
								</p>
								<p class="aj">After Lots of Fun and Adventures the Trip Comes to An End Now Time to Go Back to Home the Vechile Will Leave You At Delhi Railway Station. Tour Ends !!!!!!!! <br />
it’s Been a Great Journey. and It’s Not the End. On the Contrary, It’s the Beginning. It’s the Beginning of a Promise to Return to the Fascinating Himalyan Valleys Where You Made Friends for Life with Its People, the Colours of the Landscape, the Smell of Fresh Air, the Gaze of the Millions of Stars and Your Always-smiling Friends.</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>Hotel</li>
																		<li>Meals</li>
																		<li>Sightseeing</li>
																<li>Meal plan : Breakfast and Dinner</li><li>
Cabs : AC ( Note : A/C will won’t be operational in hills )</li>
													</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>NON VEG MEAL</li><li>
Cabs : Non-AC </li><li>
Airfare </li><li>
Others : Other Exclusions (*Car at disposal </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 specifically 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>Terms &amp; Condition<br />
1. The rates are subjects to change without any prior notice. -Accommodation in the itinerary at the mentioned hotels&nbsp; or the similar hotels . 2. The confirmation is subjects to availability. -Cost incidental to any change in the itinerary/ stay on account of flight cancellation due to bad Weather, ill health, strike, roadblocks and/or any factors beyond control. -It is a suggestion for you that please book this offer as soon as possible because we are not holding any booking and it is totally depend on the availability of rooms and flight.<br />
3. From the booking date till 30 days prior to the departure date, 30 % of the package cost is chargeable.<br />
4. From 30 days to 15 days prior to the departure date, 50 % of the package cost is chargeable.<br />
5. From 15 days to 7 days prior to departure date, 75 % of the package cost is chargeable.<br />
6. For cancellations made within 5 days prior to the departure date, 100% of the package cost is chargeable.<br />
7. No refund will be made for any unused accommodation, missed meals, transportation segments, sightseeing tours or any other service due to Bad weather, ill health, Strike, Road Blocks or any other factor beyond our Control. Such unused items are neither refundable nor exchangeable. - Room allocation is done by the hotel&nbsp; depending upon availability at the time of check-in. the category of room as specified on your confirmation voucher.<br />
8. No refund shall be claimed, if the services &amp; amenities of hotel were not up to your expectations, it will be considered on case to case basis.<br />
9. Room Heater charges will be extra charged as per hotel&nbsp; rates in every hotel.<br />
10. Meal plan will be veg in every hotel.( Non veg will be included on travellers request ).<br />
11. Rohtang Pass Permit and sighscene will be provided as per govt. Terms and conditions.<br />
12. Below 5 Years child will be complementry.More&nbsp;then 5 yrs Child will be charged as adults cost.<br />
13. All payments of package cost should be cleared before Last day check out of the tour.

<p>&nbsp;												</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="Shimla - Sangla - Chitkul - Rakcham - Kalpa - Kaza - Chandertal Manali Tour - 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="172097"/>
						</form>
						</div>
						
						";i:1;s:114:"Book Shimla - Sangla - Chitkul - Rakcham - Kalpa - Kaza - Chandertal Manali Tour - 8 Nights / 9 Days Tour Packages";i:2;s:226:"book shimla - sangla - chitkul - rakcham - kalpa - kaza - chandertal manali tour - 8 nights / 9 days tour packages, family tour packages, new delhi, manali, narkanda, sarahan, shimla, sangla, chitkul, kalpa, kaza tour packages";i:3;s:279:"Book Shimla - Sangla - Chitkul - Rakcham - Kalpa - Kaza - Chandertal Manali Tour - 8 Nights / 9 Days tour packages from Tanish Himachal Tours - Get attractive 8 Nights / 9 Days Family  tour packages for  New Delhi, Manali, Narkanda, Sarahan, Shimla, Sangla, Chitkul, Kalpa, Kaza.";i:4;s:866:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Manali, Narkanda, Sarahan, Shimla, Sangla, Chitkul, Kalpa, Kaza"        
		                 },
		      "description": "NON VEG MEAL

Cabs : Non-AC 

Airfare 

Others : Other Exclusions (*Car at disposal 

All kind of personal expenses such as tips, laundry, telephone bills and beverages. 

It also does not include any meals unless and otherwise specifically mentioned.. 

Optional, suggested or unspecified activities. 

Camera fee (still or movie)",
		      "name": "Shimla - Sangla - Chitkul - Rakcham - Kalpa - Kaza - Chandertal Manali Tour",
		      "telephone": "+91-9736035555"
		    }
		    </script>
			";i:5;N;}