a:6:{i:0;s:12787:"				<div class="h1"><h1>Delhi - Rishikesh - Pauri - Lansdowne - Delhi  04 Night / 05 Days Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.getsholidayindiatour.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.getsholidayindiatour.in/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Delhi - Rishikesh - Pauri - Lansdowne - Delhi  04 Night / 05 Days Package</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">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New Delhi, Rishikesh</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.getsholidayindiatour.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delhi - Rishikesh - Pauri - Lansdowne - Delhi  04 Night / 05 Days Package - 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="117880"/>
						</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_17/507555/191263.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/507555/191263.jpg"  width="150" height="150"    alt="Delhi - Rishikesh - Pauri - Lansdowne - Delhi  04 Night / 05 Days Package" title="Delhi - Rishikesh - Pauri - Lansdowne - Delhi  04 Night / 05 Days Package" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Rates per person on twin sharing in Indian Rupees based on base category room at all hotels. <br />
Transport using Indigo/Dezire for 02/03 pax; Innova for 04 Till 06 Pax only & instead of till 06 pax, rates shall be on request basis.<br />
Daily Breakfast & Dinner at respective Hotels/Resort included (Veg at religious destinations)<br />
Transport cost included with all toll tax, parking, interstate taxes, drivers allowance. <br />
Sightseeing as per the itineraries.<br />
Rates are valid Till March 2018.<br />
<br />
Note: The above mentioned rates are not valid during Christmas & New Year, Long Weekends, National holidays & festive period. All rates are subject to change without prior notice.GST @ 5% extra on total billing.<br />
Airfare/Transport is not on disposable basis.<br />
Jeep Safari, Boat rides, Pony rides, Cable Car rides, Train Fares, Air Fares, Personal expenses are not included.<br />
Meals except including in the costs, Boating, Ropeway etc during sightseeing are not included. <br />
AC would not run on Hill drives.<br />
Entrance fees to the places of interest to visit.<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> Arrive Delhi - Rishikesh (260 Kms)
								</p>
								<p class="aj">Arrive Delhi and proceed to Rishikesh, A spiritual city and the Yoga capital of the world. On reaching Rishikesh you'll be transferred to your hotel. In the evening, you'll be taken to Parmarth Ashram to participate in the Ganga Aarti on the banks of Ganges. Overnight 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 2:</b> Arrive Delhi and proceed to Rishikesh, A spiritual city and the Yoga capital of the world.  On reach
								</p>
								<p class="aj">Today after breakfast check out from the hotel and drive toward Pauri which is 115 kms away from Rishikesh. (Beautiful town, Pauri is a district headquarter of Pauri Garwal) It is situated at an altitude of 1814 mts above sea level abundantly blessed with nature's bounty like snow-capped Himalayan peaks and dense forests. On arrival check in at hotel. Afternoon sightseeing tour of Pauri, places to visit (Kyunkaleshwar Mahadev Temple, Kandolia Devta Temple & Pauri City. Evening back to hotel. Overnight 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> Pauri - Lansdowne (83 Kms)
								</p>
								<p class="aj">Morning after breakfast check out from the hotel and visit the places around Pauri visit Nag Devta Temple, Laxmi Narayan Temple, & Khirsu. Later proceed towards Lansdowne. On arrival check in at hotel & relax. Lansdowne is situated at an altitude of 1700 mts above sea level surrounded with thick oak and blue pine forests. Evening free to explore the Lansdowne town. Overnight 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 4:</b> In Lansdowne
								</p>
								<p class="aj">Today after breakfast local sightseeing of Lansdowne, places to visit (Church, Tip-In-Top, St. John's Church, St. Marry's Church, Lansdowne Lake (Bhulla Tal), Tarkeshwar Mahadev. Evening back to hotel. Overnight 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 5:</b> Lansdowne - Delhi (260 Kms)
								</p>
								<p class="aj">Breakfast at hotel. Later check out the hotel and drive back to Delhi, reach by evening. On arrival transfer to Airport / Railway station for further journey ahead.</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>Sightseeing</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>GST @ 5% extra on total billing.</li><li>
Airfare/Transport is not on disposable basis.</li><li>
Jeep Safari, Boat rides, Pony rides, Cable Car rides, Train Fares, Air Fares, Personal expenses are not included.</li><li>
Meals except including in the costs, Boating, Ropeway etc during sightseeing are not included. </li><li>
AC would not run on Hill drives.</li><li>
Entrance fees to the places of interest to visit.</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<ul>
	<li>Prices valid for minimum 02 - 06 people traveling together in one vehicle.</li>
	<li>Check-in / check-out time at all the properties would at 12:00 hrs (noon)</li>
	<li>Early check at all the properties would be subject to the availability at that time.</li>
	<li>All the above mentioned rates are per person rates on twin/double sharing basis.</li>
	<li>Child cost is on the basis of sharing room and bed with their parents.</li>
	<li>The above rates are applicable for resident Indian citizens only.</li>
</ul>

<p>&nbsp;<br />
<strong>BOOKING PROCEDURE:-</strong>

<ul>
	<li>All booking request for the packages has to be sent to us only by writing e-mail at:</li>
	<li>Details required for Confirmation:</li>
	<li>Please provide the following details along with your booking request:</li>
	<li>a. Clients or Group Name.</li>
	<li>b. Total No of people along with adult sharing the rooms and child with or without bed.</li>
	<li>c. Gender, Age, Valid photo id proof with address of all travelling passengers</li>
	<li>d. Date of Arrival and Departure with flight details (if travelling via air).</li>
	<li>Reference No: As soon as we receive a booking request a file no. will be sent to you, please note the same for future correspondence.</li>
	<li>Re-Confirmation: All bookings should to be reconfirmed with us minimum 30 - 15 days prior to the date off arrival along with confirmed arrival details, failure on which will be considered as cancellation.</li>
	<li>Service Voucher: The client has to carry an &quot;Exchange Service Voucher&quot; issued by the &ldquo;Discover Ladakh Adventure Tours &amp; Travel&rdquo; which will be provided to to the guest at the time of booking confirmation.</li>
</ul>

<p>&nbsp;<br />
<strong>PAYMENTS:-</strong>

<ul>
	<li>On confirmation: 50% (advance ) to be deposited at the time of booking confirmation.</li>
	<li>Re-confirmation:&nbsp; 50 (2nd installment) should be deposited 30 - 15 days before tour starts.</li>
	<li>Payment Mode: Payments can be remitted through any of the following mode and is subject to realization:</li>
	<li>a. Demand Draft: In favor of &ldquo;Intense India Tours.&rdquo; payable at New Delhi</li>
	<li>b. At Par Cheque: Issue in the name of &ldquo;Intense India Tours.&rdquo; .</li>
	<li>c. Cash / Cheque Deposit in the following:</li>
</ul>

<p><strong>CANCELLTION POLICY:</strong>

<ul>
	<li>Cancellation request has to be sent to us by e-mail only.</li>
	<li>30 -15 Days prior to departure 25% of tour cost</li>
	<li>14 -07 Days prior to departure 50% of tour cost</li>
	<li>07- 03 Days prior to departure 75% of tour cost</li>
	<li>02 Days or No show -100% of tour cost</li>
</ul>

<p>&nbsp;<br />
<strong>Note: </strong>Cancelation policy is subject to amend as per policy of hotel booked for your stay in Uttarakhand.

<p><strong>REFUND:-</strong>

<ul>
	<li>Refund will be paid to the source through which the guest is booked. Any refund will take at least 15 days to process &amp; will be sent to you by a/c payee cheque only.</li>
	<li>NO REFUND WILL BE MADE AGAINST ANY UN UTILIZED SERVICES, WHAT SO EVER MAY BE THE REASON</li>
</ul>												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.getsholidayindiatour.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delhi - Rishikesh - Pauri - Lansdowne - Delhi  04 Night / 05 Days Package - 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="117880"/>
						</form>
						</div>
						
						";i:1;s:112:"Book Delhi - Rishikesh - Pauri - Lansdowne - Delhi  04 Night / 05 Days Package - 4 Nights / 5 Days Tour Packages";i:2;s:170:"book delhi - rishikesh - pauri - lansdowne - delhi  04 night / 05 days package - 4 nights / 5 days tour packages, valley tour packages, new delhi, rishikesh tour packages";i:3;s:225:"Book Delhi - Rishikesh - Pauri - Lansdowne - Delhi  04 Night / 05 Days Package - 4 Nights / 5 Days tour packages from Gets Holiday India Tour - Get attractive 4 Nights / 5 Days Valley  tour packages for  New Delhi, Rishikesh.";i:4;s:1510:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Rishikesh"        
		                 },
		      "description": "Rates per person on twin sharing in Indian Rupees based on base category room at all hotels. 
Transport using Indigo/Dezire for 02/03 pax; Innova for 04 Till 06 Pax only & instead of till 06 pax, rates shall be on request basis.
Daily Breakfast & Dinner at respective Hotels/Resort included (Veg at religious destinations)
Transport cost included with all toll tax, parking, interstate taxes, drivers allowance. 
Sightseeing as per the itineraries.
Rates are valid Till March 2018.

Note: The above mentioned rates are not valid during Christmas & New Year, Long Weekends, National holidays & festive period. All rates are subject to change without prior notice.GST @ 5% extra on total billing.
Airfare/Transport is not on disposable basis.
Jeep Safari, Boat rides, Pony rides, Cable Car rides, Train Fares, Air Fares, Personal expenses are not included.
Meals except including in the costs, Boating, Ropeway etc during sightseeing are not included. 
AC would not run on Hill drives.
Entrance fees to the places of interest to visit.",
		      "name": "Delhi - Rishikesh - Pauri - Lansdowne - Delhi  04 Night / 05 Days Package",
		      "telephone": "+91-8532003202"
		    }
		    </script>
			";i:5;N;}