a:6:{i:0;s:20581:"				<div class="h1"><h1>Delhi – Leh – Delhi (12 Days) Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.bluedolphintravels.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.bluedolphintravels.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Delhi – Leh – Delhi (12 Days) 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">
						11 Nights / 12 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Manali</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.bluedolphintravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delhi – Leh – Delhi (12 Days) 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="96774"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
										</tr>
					</table>
					</div>
					<br />
					
					Traditional Welcome in the hotel <br />
Accommodation on twin sharing basis as per the selected category of packages <br />
BT: Bed Tea, B: Breakfast, D: Dinner <br />
Kindly Note the vehicles provided are not on disposable basis and are strictly on point to point basis as per the Itinerary selected <br />
Inner line Permit. <br />
All airport transfers & sightseeing tours by Tempo Traveler <br />
Wild life fee & Red Cross fee. <br />
The Ladakh Autonomous Hill Development Council fee (Ladakh entry fee)9 % GST Tax Extra <br />
Airfare to and from Leh or any other destination <br />
Monument & Museum Entrance Fees to be paid directly. <br />
Tips, Insurance, Laundry, Phone Calls, Guide Fee & Camera Fee <br />
Services of vehicle on leisure days and after finishing the sightseeing tour <br />
Adventure activity costs (Pony Ride, Camel Safari, Rafting, paragliding etc) <br />
Medical & Travel insurance <br />
Additional Costs due to Flight Cancellations, Road blocks, natural calamities and nature’s fury <br />
Anything not mentioned under the category "PACKAGE INCLUSIONS"<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 –Manali
								</p>
								<p class="aj">After arrival at Airport, you are advised to reach VOLVO stand by evening to board overnight VOLVO 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 city tour
								</p>
								<p class="aj">Arrive at Manali by 8am, you will be picked up by our representative from VOLVO Bus stand to facilitate Hotel Checkin. Manali Local sightseeing during the day visiting Hadimba Temple, Vashisht, Solang Valley. O/N Manali.</p>					
									<p><b>Meals : </b> (Breakfast & Dinner)</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 – Keylong – Jispa (05 HRS – 230 KMS)
								</p>
								<p class="aj">Start your overland journey early morning and drive to Keylong. This high altitude road beyond the great Himalayan range, connects the densely fertile and green Kullu valley to the stark barren region of Ladakh. The drive starts at Manali slowly winding up mountain roads till Rohtang Pass at 3,950M which connects the Kullu to the Lahaul valley. On entering the Lahaul valley we see a distinct change with the Hindu influence being replaced with the Buddhist religion. Evening at Leisure. O/N jispa</p>					
									<p><b>Meals : </b> (Breakfast & Dinner)</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> Jispa – Sarchu (02 HRS – 80 KMS)
								</p>
								<p class="aj">After Breakfast drive to Srachuenroute visiting Jispa and crossing over Baralacha La 4800 m. Baralacha La has a small lake – Surajtal which is considered to be source of river Bhaga. On arrival check in the Deluxe camp accommodation. Evening walk around the beautiful & huge campsite of Sarchu. Overnight in camp.</p>					
									<p><b>Meals : </b> (Breakfast & Dinner)</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> Sarchu - Leh (11 Hrs – 330 Kms)
								</p>
								<p class="aj">After early breakfast leave for Leh, After Sarchu we will cross a number of passes. Climb up the Gatta Loops, a series of 21 hairpin bends carved into the mountainside and then after descending once again wind your way up the Lachung La pass (4985M above sea level). Pass through SkyangchuThang (Biggest and Highest Plateau on Earth on Stretch of 42 Kms), Tanglang La Pass 17,585ft, second highest motorable road in the world, after climbing down drive along the banks of Indus River & Indus Valley. Arrive at Leh by evening. O/N Leh.</p>					
									<p><b>Meals : </b> (Breakfast & Dinner)</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> Leh Local Sightseeing (Shey – Thiksey – Hall of Fame - Shanti Stupa)
								</p>
								<p class="aj">After breakfast drive up along the scenic Indus valley. Enroute stop over to visit the famous Shey Palace & Monastery, Thiksey Monastery, visit Hall of Fame and enjoy an evening sunset at Shanti Stupa. O/N Leh…….<br />
<br />
Shey Palace & Monastery <br />
This summer palace of the erstwhile King of Leh is set upon a hill. The monastery itself has a 7.5 meter high, copper statue of a sitting Buddha, wrought in gold. This is the largest of it’s kind in the world<br />
<br />
Thiksey Monastery<br />
19 Kms from Leh, Thiksey is one of the largest and most impressive Gompas of Ladakh. The Thiksey monastery provides a panoramic view of the green Indus Valley from its vantage point atop a hill. It has chambers full of statues, Stupas and colorful Tank has. <br />
<br />
Hall of Fame<br />
Hall of Fame near Leh is worth a visit for every citizen. It is a glorious museum constructed by Indian army. You can see the memorabilia, eminent defense personalities with biographies, images and weapons used during Kargil war.<br />
<br />
Shanti Stupa<br />
Shanti Stupa is located at about 1km from Leh. It was built by a Japanese order and has wonderful views over Leh and the Indus valley especially at sunset. The stupa was built in 1980s and is a beautiful monument decorated with colourful paintings and enshrines large statues of Buddha. O/N Leh</p>					
									<p><b>Meals : </b> (Breakfast & Dinner)</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> Leh - Nubra Valley (5 HRS – 120 KMS)
								</p>
								<p class="aj">After Breakfast drive to Nubra Valley via Khardung la pass the highest motor able pass in the world (18,380 feet). On the way you get excellent view of great Karakoram Range. Keep driving through Syok River and reach Hundur by Afternoon. Visit sand dunes for camel safari. O/N Hundur.</p>					
									<p><b>Meals : </b> (Breakfast & Dinner)</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> Nubra Valley – Pangong Lake (10 HRS)
								</p>
								<p class="aj">Today we Drive on one of the remotest route of Ladakh made especially for the Indian Army, which connects Nubra Valley to Pangong Lake by passing Leh. This route was washed away in a cloud burst in 2010. Parts of it are still not rebuilt. With various stream crossings, driving on dry riverbeds, smooth tarmac and switchbacks, it truly is a religious experience for an adventure lover. Later free time at leisure and enjoy the colour changing lake and the sun set on the banks of lake. O/N Pangong Lake.</p>					
									<p><b>Meals : </b> (Breakfast & Dinner)</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> Pangong Lake – Leh (4 HRS ONE WAY – 140 KMS)
								</p>
								<p class="aj">Early morning after Breakfast leave for Lehthrough Changla Pass 17,350 ft. (3rd Highest Motorable road in the world), Spend time at the banks of Pangong Lake. This lake of Pangong is 5/6 kms wide and over 144 kms long and is shared by two countries (25% India and 75% China). Later free for Shopping at Leh Local Market. Overnight at Leh.. O/N Leh</p>					
									<p><b>Meals : </b> (Breakfast & Dinner)</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 10:</b> Leh – Sarchu (07 HRS-260 KMS)
								</p>
								<p class="aj">After Breakfast drive to Sarchu. Before we reach Sarchu. We’ll pass Taglang La (17,480 ft) surrounded by Scenic Himalayas. The drive up to Sarchu would be Quite Scenic. ries of 21 switchbacks that take you down into the valley .O/N Sarchu.</p>					
									<p><b>Meals : </b> (Breakfast & Dinner)</p>
								</td>
								</tr>
								</table>					
								</div><div id="show_more_content" style="display:none;">
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 11:</b> Sarchu – Manali (05 HRS – 230 KMS)
									</p>
									<p class="aj">The last day of the tour is the greenest so far, along the Chandra and Bagha rivers. Finally, we cross the scenic Rohtang pass down to the sight of lush green Himalayan mountains and waterfalls that appear out of nowhere. Nature here is at its best. After the descent from the pass, you drive into Manali, a popular hill station in the Himalayas and call it a day at a hotel here, your thirst for adventure undoubtedly sated. O/N Manali.</p>					
										<p><b>Meals : </b> (Breakfast & Dinner)</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 12:</b> Manali to Destination
									</p>
									<p class="aj">After Breakfast, back to Destination with Sweet Memories of Ladakh.</p>					
										<p><b>Meals : </b> (Breakfast)</p>
									</td>	
									</tr>
									</table>				
									</div>					
							</div>							<p class="mt10px ac"><a class="buttonBig p5px10px dib b" id="more_button" href="javascript:topDestinationToggle('show_more_content','more_button');" >View More &#9660;</a></p>
													<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>Sightseeing</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>9 % GST Tax Extra </li><li>
Airfare to and from Leh or any other destination </li><li>
Monument & Museum Entrance Fees to be paid directly. </li><li>
Tips, Insurance, Laundry, Phone Calls, Guide Fee & Camera Fee </li><li>
Services of vehicle on leisure days and after finishing the sightseeing tour </li><li>
Adventure activity costs (Pony Ride, Camel Safari, Rafting, paragliding etc) </li><li>
Medical & Travel insurance </li><li>
Additional Costs due to Flight Cancellations, Road blocks, natural calamities and nature’s fury </li><li>
Anything not mentioned under the category "PACKAGE INCLUSIONS"</li></ul><br />
												<p class="large b mb5px dif">Specific Departure Dates :</p>May 2017	31	   <br />
June 2017	11 & 25	   <br />
July 2017	06, 20 & 30	   <br />
August 2017	14 & 20<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<ul>
	<li>Professional Tourist Guide @ INR. 2000 per day</li>
	<li>Camel Safari @ INR. 500 per ride</li>
	<li>River Rafting in Indus (Phey to Nimo) @ INR. 2200 per person (25th June to 30th August only)</li>
	<li>Cultural program @ INR. 8500 per program</li>
</ul>

<p><strong>IMPORTANT NOTE</strong>

<ul>
	<li>Kindly note that names of hotels / Camps mentioned above only indicate that our rates have been based on usage of these hotels and it is not to be construed that accommodation is confirmed at these hotels until and unless we convey such confirmation to you. In the event of accommodation not becoming available at any of the above mentioned hotels we shall book alternate accommodation at a similar or next best available hotel and shall pass on the difference of rates (supplement/reduction whatever applicable) to you. Our offer is based on usage of base category rooms at the mentioned hotels (unless specified otherwise) and if this category of rooms is not available we shall try to confirm accommodation in next available higher category of rooms and shall advise supplementary cost involved while conveying the status. We shall not be responsible for any change in the itinerary due to landslides, flight cancellations, weather conditions or any unforeseen circumstances. The additional cost incurred will be in addition to the cost</li>
</ul>

<p><strong>BOOKING POLICY</strong>

<ul>
	<li>50% advance to confirm the booking</li>
	<li>50% balance 30 days before the date of travel</li>
</ul>

<p><strong>CANCELLATION POLICY</strong>

<ul>
	<li>25 % before 60 days from date of commencement of tour</li>
	<li>50 % before 45 days from date of commencement of tour</li>
	<li>75 % before 30 days from date of commencement of tour</li>
	<li>100 % before 15 days from date of commencement of tour</li>
</ul>						
    	<p class="h dif xlarge b mb5px">Package Cost</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">Minimum Paying Pax</td>
				<td class="headHr p5px b">Standard</td>
				<td class="headHr p5px b">Deluxe</td>
				<td class="headHr p5px b">Super Dlx</td>
				<td class="headHr p5px b">Premium</td>
			</tr>
			<tr>
				<td class="data p5px">10 pax with Tempo Traveler</td>
				<td class="data p5px">Rs. 38,500</td>
				<td class="data p5px">Rs. 41,800</td>
				<td class="data p5px">Rs. 48,400</td>
				<td class="data p5px">Rs. 62,700</td>
			</tr>
		</table></div><br>
    	<p class="h dif xlarge b mb5px">Hotel Details</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">Place</td>
				<td class="headHr p5px b">Standard</td>
				<td class="headHr p5px b">Deluxe</td>
				<td class="headHr p5px b">Super Deluxe</td>
				<td class="headHr p5px b">Premium</td>
			</tr>
			<tr>
				<td class="data p5px">Leh</td>
				<td class="data p5px">Sia la, Horpo, RoyalLadakh, Kangla</td>
				<td class="data p5px">Ladakh Imperial, New Antelope, The palace, Hilltown, Rafica, Ladakh Continental, The ladakh, The Himalaya</td>
				<td class="data p5px">Grand Himalaya, Spic n span, Shangrila</td>
				<td class="data p5px">Grand Dragon, The Zen</td>
			</tr>
			<tr>
				<td class="data p5px">Hundur (Nubra)</td>
				<td class="data p5px">Chunkas Camp, Summer Camp, Desert oasis</td>
				<td class="data p5px">Chunkas Camp, Summer Camp, Desert oasis</td>
				<td class="data p5px">Chunkas Camp, Summer Camp, Desert oasis</td>
				<td class="data p5px">Desert Himalaya, Earth home</td>
			</tr>
			<tr>
				<td class="data p5px">Pangong</td>
				<td class="data p5px">Red start, Dreamland Wooden Cottage, Wonderland Camp</td>
				<td class="data p5px">Red start, Dreamland Wooden Cottage, Wonderland Camp</td>
				<td class="data p5px">Red start, Dreamland Wooden Cottage, Wonderland Camp</td>
				<td class="data p5px">Red start, Dreamland Wooden Cottage, Wonderland Camp</td>
			</tr>
			<tr>
				<td class="data p5px">Sarchu</td>
				<td class="data p5px">Adventure Camp</td>
				<td class="data p5px">Adventure Camp</td>
				<td class="data p5px">Adventure Camp</td>
				<td class="data p5px">Adventure Camp</td>
			</tr>
			<tr>
				<td class="data p5px">Jispa</td>
				<td class="data p5px">Ibex Hotel</td>
				<td class="data p5px">Ibex Hotel</td>
				<td class="data p5px">Ibex Hotel</td>
				<td class="data p5px">Ibex Hotel</td>
			</tr>
			<tr>
				<td class="data p5px">Manali</td>
				<td class="data p5px">A Star Regency</td>
				<td class="data p5px">BykeNeelkanth / Daffodil Hotel / Vivaan Resort</td>
				<td class="data p5px">Manali Heights, De Vivendi resort</td>
				<td class="data p5px">River Country, Manu Allaya Resort</td>
			</tr>
		</table></div><br>						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.bluedolphintravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delhi – Leh – Delhi (12 Days) 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="96774"/>
						</form>
						</div>
						
						";i:1;s:79:"Book Delhi – Leh – Delhi (12 Days) Tour - 11 Nights / 12 Days Tour Packages";i:2;s:123:"book delhi – leh – delhi (12 days) tour - 11 nights / 12 days tour packages, valley tour packages, manali tour packages";i:3;s:160:"Blue Dolphin Travels offers Delhi – Leh – Delhi (12 Days) Tour - 11 Nights / 12 Days tour package, budget Valley tour packages for Manali at exciting price.";i:4;s:1428:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Manali"        
		                 },
		      "description": "Traditional Welcome in the hotel 
Accommodation on twin sharing basis as per the selected category of packages 
BT: Bed Tea, B: Breakfast, D: Dinner 
Kindly Note the vehicles provided are not on disposable basis and are strictly on point to point basis as per the Itinerary selected 
Inner line Permit. 
All airport transfers & sightseeing tours by Tempo Traveler 
Wild life fee & Red Cross fee. 
The Ladakh Autonomous Hill Development Council fee (Ladakh entry fee)9 % GST Tax Extra 
Airfare to and from Leh or any other destination 
Monument & Museum Entrance Fees to be paid directly. 
Tips, Insurance, Laundry, Phone Calls, Guide Fee & Camera Fee 
Services of vehicle on leisure days and after finishing the sightseeing tour 
Adventure activity costs (Pony Ride, Camel Safari, Rafting, paragliding etc) 
Medical & Travel insurance 
Additional Costs due to Flight Cancellations, Road blocks, natural calamities and nature’s fury 
Anything not mentioned under the category "PACKAGE INCLUSIONS"",
		      "name": "Delhi – Leh – Delhi (12 Days) Tour",
		      "telephone": "+91-9558888723"
		    }
		    </script>
			";i:5;N;}